SQL Server में Substring() का उपयोग: उदाहरण सहित कैसे करें

⚡ स्मार्ट सारांश

SQL सर्वर में SUBSTRING() का उपयोग करना उदाहरण के लिएtracयह किसी अक्षर, पाठ या बाइनरी अभिव्यक्ति का एक भाग होता है, जो चुने हुए प्रारंभिक स्थान से निश्चित संख्या में अक्षर लौटाता है, और सीमांकक-आधारित पार्सिंग के लिए CHARINDEX के साथ स्वाभाविक रूप से जुड़ता है।

  • उद्देश्य: SUBSTRING() फ़ंक्शन स्रोत अभिव्यक्ति, प्रारंभिक स्थिति और लंबाई दिए जाने पर स्ट्रिंग का एक विशिष्ट भाग लौटाता है।
  • 🔢 तीन तर्क: SQL Server के SUBSTRING() फ़ंक्शन में एक्सप्रेशन, शुरुआती स्थिति और कुल लंबाई तीनों अनिवार्य हैं।
  • 📍 एक-आधारित सूचकांक: प्रारंभिक स्थिति 1-आधारित है, इसलिए पहला अक्षर पहली स्थिति के रूप में गिना जाता है, जिससे एक-से-एक की गलतियों से बचा जा सकता है।
  • 🔎 CHARINDEX के साथ: SUBSTRING() और CHARINDEX() का संयोजन एक विभाजक का पता लगाता है और उसे हटा देता है।tracयह इसके पहले या बाद का पाठ है।
  • बाएँ और दाएँ के विपरीत: LEFT() और RIGHT() के विपरीत, SUBSTRING() extracकिसी भी स्थिति से टीएस अक्षर, न केवल अंत से।
  • ⚠️ किनारे के मामले: यदि लंबाई NULL है तो NULL ही वापस मिलता है, जबकि स्ट्रिंग से अधिक लंबाई होने पर बिना कोई त्रुटि उत्पन्न किए शेष मान वापस मिल जाता है।

SQL सर्वर में SUBSTRING() फ़ंक्शन और T-SQL के उदाहरण

सबस्ट्रिंग() क्या है?

SUBSTRING() एक फ़ंक्शन है एसक्यूएल यह फ़ंक्शन उपयोगकर्ता को आवश्यकतानुसार किसी भी दी गई स्ट्रिंग से एक सबस्ट्रिंग निकालने की सुविधा देता है। SUBSTRING() उदाहरणtracSUBSTRING() एक निर्दिष्ट लंबाई की स्ट्रिंग है, जो इनपुट स्ट्रिंग में दिए गए स्थान से शुरू होती है। SQL में SUBSTRING() फ़ंक्शन का उद्देश्य स्ट्रिंग के एक विशिष्ट भाग को लौटाना है।

Substring() के लिए सिंटैक्स

SUBSTRING(Expression, Starting Position, Total Length)

यहाँ:

  • SUBSTRING() एक्सप्रेशन में SQL सर्वर यह कोई भी कैरेक्टर, बाइनरी, टेक्स्ट या इमेज हो सकता है। एक्सप्रेशन वह सोर्स स्ट्रिंग है जिससे सबस्ट्रिंग निकाली जाती है।
  • स्टार्टिंग पोजीशन, एक्सप्रेशन में उस स्थिति को निर्धारित करती है जहां से नया सबस्ट्रिंग शुरू होना चाहिए।
  • कुल लंबाई, प्रारंभिक स्थिति से शुरू होकर, व्यंजक से प्राप्त होने वाले परिणामी सबस्ट्रिंग की कुल अपेक्षित लंबाई है।

SUBSTRING() का उपयोग करने के नियम

  • एमएस एसक्यूएल SUBSTRING() फ़ंक्शन में तीनों तर्क अनिवार्य हैं।
  • यदि आरंभिक स्थिति एक्सप्रेशन में वर्णों की अधिकतम संख्या से अधिक है, तो SQL सर्वर में SUBSTRING() फ़ंक्शन द्वारा कुछ भी वापस नहीं किया जाता है।
  • कुल लंबाई मूल स्ट्रिंग की अधिकतम वर्ण लंबाई से अधिक हो सकती है। इस स्थिति में, परिणामी सबस्ट्रिंग पूरी स्ट्रिंग होती है, जो एक्सप्रेशन में शुरुआती स्थिति से लेकर एक्सप्रेशन के अंतिम वर्ण तक होती है।

नीचे दिया गया आरेख SQL सर्वर में SUBSTRING() फ़ंक्शन के उपयोग को दर्शाता है:

आरेख दर्शाता है कि SUBSTRING() का उपयोग कैसे किया जाता है।tracदी गई लंबाई के लिए प्रारंभिक स्थिति से टीएस अक्षर

T-SQL सबस्ट्रिंग उदाहरण

मान्यता: मान लीजिए कि हमारे पास ' नामक एक तालिका हैGuruनीचे दिखाए गए अनुसार, दो कॉलम और चार पंक्तियों वाला 99' का प्रारूप। हम इसका उपयोग करेंगे।Guruनिम्नलिखित उदाहरणों में 99' तालिका:

Guru99 नमूना तालिका जिसमें ट्यूटोरियल_आईडी और ट्यूटोरियल_नाम कॉलम का उपयोग सबस्ट्रिंग उदाहरणों में किया गया है।

प्रश्न 1: SQL में SUBSTRING() फ़ंक्शन का उपयोग करते समय, यदि लंबाई एक्सप्रेशन की कुल अधिकतम लंबाई से कम है।

SELECT Tutorial_name, SUBSTRING(Tutorial_name,1,2) As SUB from Guru99;

परिणाम: नीचे दिया गया आरेख 'ट्यूटोरियल_नाम' कॉलम के सबस्ट्रिंग को 'SUB' कॉलम के रूप में प्रदर्शित करता है। प्रारंभिक स्थिति 1 है और लंबाई 2 है, इसलिए पहले दो अक्षर लौटाए जाते हैं:

परिणाम ग्रिड ट्यूटोरियल_नाम के पहले दो अक्षरों को उप स्तंभ के रूप में लौटाता है।

प्रश्न 2: SQL Server में SUBSTRING() फ़ंक्शन का उपयोग करते समय, यदि लंबाई एक्सप्रेशन की कुल अधिकतम लंबाई से अधिक है।

SELECT Tutorial_name, SUBSTRING(Tutorial_name,2,8) As SUB from Guru99;

परिणाम: नीचे दिया गया आरेख 'ट्यूटोरियल_नाम' कॉलम के सबस्ट्रिंग को 'SUB' कॉलम के रूप में प्रदर्शित करता है। यद्यपि सबस्ट्रिंग की लंबाई एक्सप्रेशन की कुल अधिकतम लंबाई से अधिक है, फिर भी कोई त्रुटि उत्पन्न नहीं होती है और क्वेरी प्रारंभिक स्थिति से आगे की पूरी स्ट्रिंग लौटाती है।

अनुरोधित लंबाई स्ट्रिंग से अधिक होने पर परिणाम ग्रिड ट्यूटोरियल_नाम का शेष भाग लौटाता है।

SQL सर्वर में CHARINDEX के साथ SUBSTRING का उपयोग करना

SUBSTRING() का एक बहुत ही सामान्य वास्तविक दुनिया का उपयोग हैtracSUBSTRING() फ़ंक्शन किसी विभाजक से पहले या बाद में आने वाले टेक्स्ट को परिभाषित करता है, जैसे कि ईमेल पते में डोमेन। SUBSTRING() फ़ंक्शन को स्वयं एक निश्चित प्रारंभिक स्थिति की आवश्यकता होती है, लेकिन विभाजक की स्थिति प्रत्येक पंक्ति में भिन्न होती है। CHARINDEX() फ़ंक्शन स्ट्रिंग के भीतर किसी वर्ण की स्थिति लौटाकर इस समस्या का समाधान करता है।

CHARINDEX(substring_to_find, expression [, start_location])

SUBSTRING() के अंदर CHARINDEX() को नेस्ट करके, प्रारंभिक स्थिति गतिशील हो जाती है। नीचे दिया गया उदाहरण प्रारंभिक स्थिति का पता लगाता है। @ प्रतीक और उसके बाद सब कुछ लौटाता है। परिवर्तनशील इसमें नमूना मान निहित है:

DECLARE @Email VARCHAR(50) = 'john.doe@guru99.com';
SELECT SUBSTRING(@Email, CHARINDEX('@', @Email) + 1, LEN(@Email)) AS Domain;

यहां, CHARINDEX('@', @Email) @ प्रतीक की स्थिति का पता लगाता है, 1 जोड़ने पर यह उससे आगे बढ़ जाता है, और फिर SUBSTRING() एक्सप्रेशन फ़ंक्शन का उपयोग करता है।tracशेष वर्णों को दर्शाता है। उपरोक्त मान के लिए, क्वेरी डोमेन लौटाती है। गुरु99.comयह CHARINDEX-plus-SUBSTRING पैटर्न T-SQL में संरचित स्ट्रिंग को पार्स करने का मानक तरीका है।

SQL सर्वर में SUBSTRING बनाम LEFT और RIGHT

SQL Server स्ट्रिंग के प्रारंभ या अंत से वर्ण निकालने के लिए LEFT() और RIGHT() फ़ंक्शन भी प्रदान करता है। इन्हें लिखना छोटा होता है, लेकिन ये केवल दोनों सिरों तक ही सीमित हैं। SUBSTRING() सबसे अधिक लचीला है क्योंकि यह किसी भी स्थिति से शुरू हो सकता है। नीचे दी गई तालिका इन दोनों की तुलना करती है:

समारोह तर्क Extracटीएस से समतुल्य SUBSTRING()
बाएँ (अभिव्यक्ति, n) 2 स्ट्रिंग की शुरुआत सबस्ट्रिंग(अभिव्यक्ति, 1, n)
सही(अभिव्यक्ति, n) 2 डोरी का अंत सबस्ट्रिंग(अभिव्यक्ति, LEN(अभिव्यक्ति) – n + 1, n)
सबस्ट्रिंग (अभिव्यक्ति, प्रारंभ, लंबाई) 3 किसी भी स्थिति में लागू नहीं होता

संक्षेप में, LEFT() और RIGHT() स्ट्रिंग के सिरों के लिए सुविधाजनक शॉर्टकट हैं, जबकि SUBSTRING() बीच से लिए गए वर्णों सहित सामान्य स्थिति को संभालता है।

सबस्ट्रिंग में ऋणात्मक, शून्य और नल तर्क

बुनियादी नियमों के अलावा, यह जानना भी ज़रूरी है कि SUBSTRING() फ़ंक्शन किनारों पर कैसे काम करता है। जब शुरुआती स्थिति शून्य या ऋणात्मक होती है, तो SQL Server प्रभावी लंबाई (start + length – 1) की गणना करता है और पहली स्थिति से पढ़ना शुरू करता है। जब कोई भी आर्गुमेंट NULL होता है, तो परिणाम भी NULL होता है। नीचे दी गई तालिका आधिकारिक डेटा से सत्यापित है। सबस्ट्रिंग (ट्रांसैक्ट-एसक्यूएल) संदर्भ में, ये मामले दिखाए गए हैं:

कॉल परिणाम कारण
सबस्ट्रिंग('Guru99', 1, 4) Guru सामान्य कॉल: पहले स्थान से चार अक्षर।
सबस्ट्रिंग('Guru99', 0, 3) Gu एक से नीचे से शुरू करें: प्रभावी लंबाई 0 + 3 – 1 = 2 है।
सबस्ट्रिंग('Guru99', 4, 100) u99 स्ट्रिंग से अधिक लंबाई होने पर शेषफल बिना किसी त्रुटि के लौटा दिया जाता है।
सबस्ट्रिंग('Guru99', 3, शून्य) नल एक NULL आर्गुमेंट पूरे परिणाम को NULL बना देता है।

इन अपवादों को जानने से अप्रत्याशित स्थितियों से बचा जा सकता है जब प्रारंभिक स्थिति की गणना किसी अन्य कॉलम या किसी अन्य स्रोत से की जाती है। परिवर्तनशील वह शून्य या NULL हो सकता है।

अक्सर पूछे जाने वाले प्रश्न

SQL सर्वर SUBSTRING() का उपयोग करता है; SUBSTR() इसका नाम है। Oracle और MySQLदोनों ही स्ट्रिंग का एक हिस्सा लौटाते हैं, लेकिन SUBSTRING() मानक Transact-SQL फ़ंक्शन है, इसलिए SUBSTR() SQL सर्वर पर नहीं चलेगा।

जी हां। चूंकि SUBSTRING() एक मान लौटाता है, इसलिए यह WHERE, SELECT और ORDER BY क्लॉज़ में आ सकता है। SUBSTRING() पर फ़िल्टरिंग आमतौर पर इंडेक्स सीक को रोकती है, इसलिए प्रीफ़िक्स खोजों के लिए LIKE पैटर्न अक्सर तेज़ होता है।

जी हां, लेकिन SQL सर्वर पहले मान को स्ट्रिंग में परिवर्तित करता है, या तो अप्रत्यक्ष रूप से या CAST या CONVERT के माध्यम से। प्रारंभिक स्थिति और लंबाई में वर्णों की गणना की जाती है, अंकों या दिनांक के भागों की नहीं, इसलिए मान को सावधानीपूर्वक स्वरूपित करें।

तीन तर्कों वाला रूप भी इसी तरह व्यवहार करता है, लेकिन कुछ बारीकियाँ भिन्न होती हैं। MySQL यह SUBSTR() और नकारात्मक प्रारंभिक स्थितियों की भी अनुमति देता है, जबकि SQL सर्वर SUBSTRING() का उपयोग करता है और एक से कम की शुरुआत को प्रभावी-लंबाई नियम का उपयोग करके मानता है।

SUBSTRING() फ़ंक्शन इनपुट के समान श्रेणी लौटाता है: वर्ण डेटा के लिए varchar, यूनिकोड टेक्स्ट के लिए nvarchar और बाइनरी एक्सप्रेशन के लिए varbinary। लंबाई अनुरोधित सबस्ट्रिंग पर निर्भर करती है, न कि संपूर्ण स्रोत कॉलम पर।

लपेटेंping WHERE क्लॉज़ के अंदर SUBSTRING() में एक कॉलम होने से प्रेडिकेट नॉन-सार्गेबल हो जाता है, इसलिए SQL सर्वर उस कॉलम पर इंडेक्स सीक का उपयोग नहीं कर सकता। प्रीफ़िक्स मिलान के लिए, LIKE 'value%' पैटर्न आमतौर पर बेहतर प्रदर्शन करता है।

हां. गिटहब कोपिलॉट यह क्वेरी प्राकृतिक भाषा के प्रॉम्प्ट से SUBSTRING() और CHARINDEX() एक्सप्रेशन तैयार कर सकती है, जिसमें डिलिमिटर-आधारित पार्सिंग भी शामिल है। क्वेरी चलाने से पहले हमेशा शुरुआती स्थिति, लंबाई और 1-आधारित इंडेक्सिंग की जांच कर लें।

कृत्रिम बुद्धिमत्ता और मशीन लर्निंग सहायक सरल अंग्रेजी नियमों को SUBSTRING(), CHARINDEX(), LEFT() और RIGHT() संयोजनों में अनुवादित करते हैं, लंबाई की गणना का सुझाव देते हैं और एक-से-एक की त्रुटियों को चिह्नित करते हैं। डेवलपर प्रत्येक सुझाव को लागू करने से पहले उसकी सटीकता की समीक्षा करता है।

इस पोस्ट को संक्षेप में इस प्रकार लिखें: