Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL सर्वर में CAST () बनाम TRY_CAST ():क्या अंतर है?

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.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. सॉफ्टवेयर समीक्षा - एमएस एसक्यूएल के लिए तारकीय मरम्मत

  2. एक खुले SQL कनेक्शन को बंद करने का उपयोग समाप्त होता है

  3. SSMS संस्करण 18 - कोई डेटाबेस आरेख नहीं

  4. SQL सर्वर आंतरिक:समस्याग्रस्त ऑपरेटर्स पं। द्वितीय - हाशिंग

  5. SQL सर्वर 2008 में स्प्लिट फ़ंक्शन