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

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

SQL सर्वर में, PARSE() और TRY_PARSE() फ़ंक्शन का उपयोग किसी मान को दूसरे डेटा प्रकार में अनुवाद करने के लिए किया जाता है। वे अनिवार्य रूप से एक ही काम करते हैं, एक अपवाद के साथ; वे त्रुटियों से कैसे निपटते हैं।

अगर PARSE() किसी भिन्न डेटा प्रकार को पार्स करने का प्रयास करते समय विफल रहता है, यह एक त्रुटि लौटाएगा। अगर TRY_PARSE() विफल रहता है, यह वापस आ जाएगा NULL

उदाहरण 1 - पहला, समानताएं

यहां एक उदाहरण दिया गया है जो दर्शाता है कि कैसे दोनों फ़ंक्शन एक ही परिणाम लौटाते हैं जब वे आवश्यक डेटा प्रकार के मान को सफलतापूर्वक पार्स कर सकते हैं:

SELECT 
    PARSE('Fri, 8 June 2018' AS date) AS PARSE,
    PARSE('Fri, 8 June 2018' AS date) AS TRY_PARSE;

परिणाम:

+------------+-------------+
| PARSE      | TRY_PARSE   |
|------------+-------------|
| 2018-06-08 | 2018-06-08  |
+------------+-------------+

जैसा कि अपेक्षित था, वे दोनों बिल्कुल एक ही परिणाम लौटाते हैं।

लेकिन देखते हैं कि क्या होता है जब वे आवश्यक डेटा प्रकार के लिए मान को पार्स करने में असमर्थ होते हैं।

उदाहरण 2 - जब PARSE() विफल हो जाता है

यहां एक उदाहरण दिया गया है कि क्या होता है जब PARSE() किसी मान को दूसरे मान में पार्स करने में असमर्थ है:

SELECT PARSE('Next year' AS date) AS Result;

परिणाम:

Error converting string value 'Next year' into data type date using culture ''. 

ऑपरेशन विफल हो जाता है क्योंकि मैंने अनुरोधित डेटा प्रकार का वैध प्रतिनिधित्व प्रदान नहीं किया है। दूसरे शब्दों में, PARSE() Next year में कनवर्ट नहीं कर सकता एक तारीख . में अनुरोध के अनुसार डेटा प्रकार।

उदाहरण 3 - जब TRY_PARSE() विफल हो

यहां एक उदाहरण दिया गया है जब हम उसी मान को TRY_PARSE() . के साथ पार्स करने का प्रयास करते हैं :

SELECT TRY_PARSE('Next year' AS date) AS Result;

परिणाम:

+----------+
| Result   |
|----------|
| NULL     |
+----------+

पार्स अभी भी विफल है, लेकिन यह NULL लौटाता है त्रुटि के बजाय।

उदाहरण 4 - सशर्त विवरण के साथ TRY_PARSE() का उपयोग करना

हम TRY_PARSE() ले सकते हैं और इसके वापसी मूल्य का परीक्षण करें। यदि यह एक NULL मान है, तो हम एक चीज़ वापस कर सकते हैं, यदि यह एक गैर-शून्य मान है, तो हम दूसरा वापस कर सकते हैं:

SELECT 
    CASE WHEN TRY_PARSE('Next year' AS date) IS NULL
        THEN 'Conversion failed'
        ELSE 'Conversion succeeded'
    END
AS Result;

परिणाम:

+-------------------+
| Result            |
|-------------------|
| Conversion failed |
+-------------------+

उदाहरण 5 - TRY_PARSE() त्रुटि के साथ

सिर्फ इसलिए कि TRY_PARSE() उपरोक्त उदाहरणों में त्रुटि का परिणाम नहीं है, इसका मतलब यह नहीं है कि यह कभी नहीं एक त्रुटि में परिणाम। ऐसे समय होते हैं जब आप इस फ़ंक्शन का उपयोग करते समय अभी भी त्रुटि प्राप्त कर सकते हैं।

उदाहरण के लिए, यदि आप culture . के रूप में अमान्य मान प्रदान करते हैं, तो आपको एक त्रुटि मिलेगी तर्क:

SELECT TRY_PARSE('Next year' AS date USING 'Mars') AS Result;

परिणाम:

The culture parameter 'Mars' provided in the function call is not supported. 

इन कार्यों के बारे में कुछ नोट्स

यहाँ कुछ बिंदु दिए गए हैं जो Microsoft को इन कार्यों के बारे में कहना है:

  • यह अनुशंसा की जाती है कि आप PARSE() का उपयोग करें और TRY_PARSE() केवल स्ट्रिंग से दिनांक/समय और संख्या प्रकारों में कनवर्ट करने के लिए। अन्य डेटा प्रकारों के लिए, CAST() use का उपयोग करें या CONVERT()
  • ये फ़ंक्शन .NET फ्रेमवर्क कॉमन लैंग्वेज रनटाइम (CLR) की उपस्थिति पर निर्भर करते हैं।
  • स्ट्रिंग मान को पार्स करने में एक निश्चित प्रदर्शन ओवरहेड होता है।
  • इन कार्यों को दूरस्थ नहीं किया जाएगा क्योंकि वे सीएलआर की उपस्थिति पर निर्भर करते हैं। किसी ऐसे फ़ंक्शन को दूरस्थ करने का प्रयास करना जिसके लिए CLR की आवश्यकता होती है, दूरस्थ सर्वर पर त्रुटि उत्पन्न करेगा।

  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 सर्वर में स्थानीय और वैश्विक अस्थायी तालिकाओं के बीच अंतर

  2. एसक्यूएल में जाने के साथ गतिशील क्वेरी निष्पादित करें

  3. SQL सर्वर रैंडम सॉर्ट

  4. SQL सर्वर के लिए Linux पर चल रहे एप्लिकेशन को Amazon रिलेशनल डेटाबेस सर्विसेज (RDS) से कनेक्ट करना

  5. SQL सर्वर में आस्थगित बाधाएं