SQL सर्वर में डेटा प्रकारों के बीच कनवर्ट करते समय, आप विभिन्न कार्यों में चलेंगे जो प्रतीत होता है कि वही काम करते हैं। हालाँकि, इन कार्यों के बीच आमतौर पर अंतर होते हैं जो पहली नज़र में स्पष्ट नहीं हो सकते हैं। इसका एक उदाहरण CAST()
. के बीच का अंतर है और TRY_CAST()
कार्य।
यह आलेख SQL सर्वर का उपयोग करते समय इन कार्यों के बीच अंतर को प्रदर्शित करता है।
CAST()
. के बीच मुख्य अंतर और TRY_CAST()
फ़ंक्शन उस तरह से हैं जैसे वे डेटा को संभालते हैं जिसे परिवर्तित नहीं किया जा सकता है।
द कास्ट () फंक्शन
CAST()
फ़ंक्शन एक डेटा प्रकार की अभिव्यक्ति को दूसरे में परिवर्तित करता है। यह आपको विभिन्न डेटा प्रकारों के दो मानों को संयोजित करने जैसी चीज़ें करने की अनुमति देता है। इस तरह:
SELECT 'Comments: ' + CAST(9 AS varchar(12)) AS Result;
परिणाम:
Result ----------- Comments: 9
यह ठीक काम करता है जब डेटा परिवर्तित किया जा सकता है। लेकिन क्या होगा यदि डेटा परिवर्तित नहीं किया जा सकता है?
उस स्थिति में आपको कुछ ऐसा मिलेगा:
SELECT 'Comments: ' + CAST(10.00 AS varchar(1)) AS Result;
परिणाम:
Error: Arithmetic overflow error converting numeric to data type varchar.
यह काफी उचित है - यदि SQL सर्वर डेटा को परिवर्तित नहीं कर सकता है, तो आपको यह जानना होगा!
हालांकि, इसे करने का एक और तरीका है।
TRY_CAST() फ़ंक्शन
TRY_CAST()
फ़ंक्शन ठीक वैसे ही काम करता है जैसे CAST()
सिवाय इसके कि यदि डेटा को परिवर्तित नहीं किया जा सकता है, तो यह null
लौटाता है (CAST()
. जैसी त्रुटि फेंकने के बजाय करता है):
SELECT 'Comments: ' + TRY_CAST(10.00 AS varchar(1)) AS Result;
परिणाम:
Result ------ null
यदि आप सशर्त प्रोग्रामिंग का उपयोग करना चाहते हैं तो यह आसान हो सकता है ताकि डेटा को परिवर्तित किया जा सके या नहीं, इस पर निर्भर करते हुए एप्लिकेशन एक अलग कार्य करता है।
उदाहरण:
SELECT CASE WHEN TRY_CAST(10.00 AS varchar(2)) IS NULL THEN 'Cast failed' ELSE 'Cast succeeded' END AS Result;
परिणाम:
Result ----------- Cast failed
अमान्य डेटा प्रकार
TRY_CAST()
फ़ंक्शन केवल मान्य डेटा प्रकारों का उपयोग करते समय इस तरह से काम करता है। इसलिए यदि आप स्पष्ट रूप से ऐसा डेटा प्रकार प्रदान करते हैं जिसकी अनुमति नहीं है तो आपको एक त्रुटि मिलेगी।
उदाहरण:
SELECT 'Comments: ' + TRY_CAST(10.00 AS Miami) AS Result;
परिणाम:
Error: Type Miami is not a defined system type.