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 की आवश्यकता होती है, दूरस्थ सर्वर पर त्रुटि उत्पन्न करेगा।