यदि आपको SQL सर्वर त्रुटि Msg 8114 मिल रही है जो कुछ इस तरह पढ़ती है डेटा प्रकार varchar को संख्यात्मक में कनवर्ट करने में त्रुटि , ऐसा शायद इसलिए है क्योंकि आप एक डेटा प्रकार रूपांतरण करने का प्रयास कर रहे हैं जो विफल हो जाता है क्योंकि मान को गंतव्य प्रकार में परिवर्तित नहीं किया जा सकता है।
ऐसा इसलिए नहीं है क्योंकि आप उस प्रकार को नए प्रकार में परिवर्तित नहीं कर सकते। यह मूल्य के कारण ही है।
त्रुटि का उदाहरण
यहां कोड का एक उदाहरण दिया गया है जो त्रुटि उत्पन्न करता है:
SELECT CAST('Ten' AS DECIMAL(5,2));
परिणाम:
Msg 8114, Level 16, State 5, Line 1 Error converting data type varchar to numeric.
यह त्रुटि इसलिए हुई क्योंकि SQL सर्वर स्ट्रिंग मान को दशमलव में परिवर्तित नहीं कर सका।
समाधान 1
इसे ठीक करने के लिए, आपको यह सुनिश्चित करना होगा कि आप एक ऐसा मान प्रदान करते हैं जिसे SQL सर्वर परिवर्तित कर सकता है।
यदि आप एक कॉलम पास कर रहे हैं, तो जांचें कि आपको सही कॉलम मिला है। वही अगर आप एक वेरिएबल पास कर रहे हैं - जांचें कि यह सही वेरिएबल है।
ध्यान रखें कि स्ट्रिंग को दशमलव में बदलने की कोशिश के सभी मामलों में ऐसा नहीं हो सकता है, क्योंकि कुछ स्ट्रिंग मानों को परिवर्तित किया जा सकता है।
उदाहरण के लिए, निम्न रूपांतरण सफल होता है:
SELECT CAST('10' AS DECIMAL(5,2));
परिणाम:
10.00
यहाँ, SQL सर्वर उस 10
. पर काम करने में सक्षम था एक संख्या है, और इसलिए रूपांतरण सफल हुआ।
समाधान 2
यदि आपको रूपांतरण विफल होने से कोई आपत्ति नहीं है, लेकिन आप नहीं चाहते कि यह कोई त्रुटि लौटाए, तो TRY_CAST()
आज़माएं या TRY_CONVERT()
कार्य।
त्रुटि वापस करने के बजाय, ये फ़ंक्शन NULL
लौटाते हैं जब मान परिवर्तित नहीं किया जा सकता।
उदाहरण:
SELECT TRY_CAST('Ten' AS DECIMAL(5,2));
परिणाम:
NULL