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

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

आपने देखा होगा कि T-SQL में CONVERT() both दोनों शामिल हैं फ़ंक्शन और एक TRY_CONVERT() फ़ंक्शन जिसे आप SQL सर्वर में डेटा प्रकारों के बीच रूपांतरण करने के लिए उपयोग कर सकते हैं। लेकिन अगर आप इन दो कार्यों में क्या अंतर है, इस पर अपना सिर खुजला रहे हैं, तो पढ़ें!

CONVERT() . के बीच का अंतर और TRY_CONVERT() जिस तरह से वे डेटा प्रकारों को संभालते हैं जिन्हें परिवर्तित नहीं किया जा सकता है। एक त्रुटि फेंकता है, जबकि दूसरा शून्य देता है। निम्नलिखित उदाहरण इसे प्रदर्शित करते हैं।

कन्वर्ट() फ़ंक्शन

सबसे पहले, आइए देखें कि CONVERT() . क्या है? समारोह करता है। यह एक डेटा टाइप को दूसरे डेटा टाइप में कनवर्ट करता है। यहां एक उदाहरण दिया गया है:

SELECT 'Comments: ' + CONVERT(varchar(12), 9) AS Result;

परिणाम:

Result     
-----------
Comments: 9

इस उदाहरण में, हम एक int . को रूपांतरित करते हैं varchar(12) . का मान . और क्योंकि मान हमारे वांछित डेटा प्रकार और लंबाई में परिवर्तित होने में सक्षम था, इसने पूरी तरह से काम किया।

हालांकि, जब रूपांतरण सफल होता है तो यह पूरी तरह से काम करता है, जब यह विफल हो जाता है तो क्या होता है?

जब रूपांतरण विफल हो जाता है → त्रुटि

आइए कोड में थोड़ा बदलाव करें और देखें कि रूपांतरण विफल होने पर क्या होता है:

SELECT 'Comments: ' + CONVERT(varchar(1), 10.00) AS Result;

परिणाम:

Error: Arithmetic overflow error converting numeric to data type varchar.

हमें एक त्रुटि मिलती है।

TRY_CONVERT() फ़ंक्शन

TRY_CONVERT() एक विकल्प है जिसका उपयोग हम त्रुटि संदेश को रोकने के लिए कर सकते हैं। यह फ़ंक्शन CONVERT() . के समान डेटा रूपांतरण कार्य करता है , हालांकि, अगर यह फ़ंक्शन रूपांतरण नहीं कर सकता है, तो यह null returns लौटाता है :

SELECT 'Comments: ' + TRY_CONVERT(varchar(1), 10.00) AS Result;

परिणाम:

Result
------
null

आप इस परिणाम को ले सकते हैं और सशर्त कोड लागू कर सकते हैं ताकि रूपांतरण सफल होता है या नहीं, इसके आधार पर एक अलग चीज होती है।

उदाहरण:

SELECT   
    CASE WHEN TRY_CONVERT(varchar(1), 10.00) IS NULL   
    THEN 'Conversion failed'  
    ELSE 'Conversion succeeded'  
END AS Result;

परिणाम:

Result           
-----------------
Conversion failed

अमान्य डेटा प्रकार

TRY_CONVERT() . के साथ एक चेतावनी यह है कि वैध डेटा प्रकारों का उपयोग करते समय यह केवल इस तरह से काम करता है। इसलिए यदि आप स्पष्ट रूप से ऐसा डेटा प्रकार प्रदान करते हैं जिसकी अनुमति नहीं है तो आपको एक त्रुटि मिलेगी।

उदाहरण:

SELECT 'Comments: ' + TRY_CONVERT(Homer, 10.00) AS Result;

परिणाम:

Error: Type Homer 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. SQL सर्वर में किसी तालिका में इष्टतम अद्वितीय पहचानकर्ता कैसे खोजें:sp_special_columns

  2. LEN फ़ंक्शन SQL सर्वर में अनुगामी रिक्त स्थान को शामिल नहीं करता है

  3. एसक्यूएल सर्वर में सेलेक्ट स्टेटमेंट में व्हेयर क्लॉज का उपयोग कैसे करें - एसक्यूएल सर्वर / टीएसक्यूएल ट्यूटोरियल पार्ट 109

  4. SQL सर्वर में टेक्स्ट क्वालीफायर के साथ बल्क इंसर्ट

  5. क्या एक एसक्यूएल सर्वर टेबल में दो पहचान कॉलम हो सकते हैं?