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

टी-एसक्यूएल में एक स्ट्रिंग से सबस्ट्रिंग कैसे निकालें?

समस्या:

आपके पास स्ट्रिंग्स का एक कॉलम है, और आप उनसे सबस्ट्रिंग प्राप्त करना चाहेंगे।

उदाहरण 1:

emails तालिका, एक ईमेल कॉलम है। आप प्रत्येक ईमेल के पहले सात वर्ण प्रदर्शित करना चाहेंगे।

तालिका इस तरह दिखती है:

ईमेल
[email protected]
[email protected]
[email protected]
[email protected]

समाधान 1:

SELECT
  email,
  SUBSTRING(email, 1, 7) AS substring
FROM emails;

नतीजा यह है:

ईमेल सबस्ट्रिंग
[email protected] जेक99@
[email protected] तामारब
[email protected] नोटिन@
[email protected] जेसिका

चर्चा:

SUBSTRING() का प्रयोग करें समारोह। पहला तर्क स्ट्रिंग या स्तंभ नाम है। दूसरा तर्क उस चरित्र का सूचकांक है जिस पर सबस्ट्रिंग शुरू होनी चाहिए। तीसरा तर्क सबस्ट्रिंग की लंबाई है।

ध्यान रहें! कुछ अन्य प्रोग्रामिंग भाषाओं के विपरीत, सूचकांक 1 से शुरू होते हैं , 0 नहीं। इसका मतलब है कि पहले वर्ण में अनुक्रमणिका 1 है, दूसरे वर्ण में अनुक्रमणिका 2, आदि है।

SUBSTRING(email, 1, 7) email में मानों के सबस्ट्रिंग लौटाएगा कॉलम जो पहले अक्षर से शुरू होता है और सात वर्णों के लिए जाता है।

उदाहरण 2:

आप इंडेक्स 2 और 6 (समावेशी) के बीच सबस्ट्रिंग प्रदर्शित करना चाहते हैं।

समाधान 2:

SELECT
  email,
  SUBSTRING(email, 2, 5) AS substring
FROM emails;

नतीजा यह है:

ईमेल सबस्ट्रिंग
[email protected] ake99
[email protected] अमारा
[email protected] ओटिन
[email protected] essic

चर्चा:

आप SUBSTRING() . का उपयोग करते हैं पिछले उदाहरणों की तरह ही कार्य करें। इस बार, फ़ंक्शन का दूसरा तर्क 2 है , चूंकि हम इंडेक्स 2 से शुरू करना चाहते हैं। सबस्ट्रिंग की लंबाई 5 है (end_index - start_index + 1 )।

उदाहरण 3:

आप @ . से शुरू होने वाले सबस्ट्रिंग को प्रदर्शित करना चाहेंगे हस्ताक्षर करें और स्ट्रिंग के अंत में समाप्त होता है, लेकिन आप सटीक अनुक्रमणिका या लंबाई नहीं जानते हैं।

समाधान 3:

SELECT
  email,
  SUBSTRING(email, CHARINDEX('@', email), LEN(email) - CHARINDEX('@', email) + 1) AS substring
FROM emails;

नतीजा यह है:

ईमेल सबस्ट्रिंग
[email protected] @gmail.com
[email protected] @zoho.com
[email protected] @yahoo.fr
[email protected] @onet.pl

चर्चा:

आप SUBSTRING() . का उपयोग करते हैं पिछले उदाहरणों की तरह ही कार्य करें। इस बार, आप एक विशिष्ट वर्ण की तलाश कर रहे हैं जिसकी स्थिति पंक्ति से पंक्ति में भिन्न हो सकती है। विशिष्ट वर्ण की अनुक्रमणिका खोजने के लिए, आप CHARINDEX(character, column) का उपयोग कर सकते हैं फ़ंक्शन जहां वर्ण विशिष्ट वर्ण है जिस पर आप सबस्ट्रिंग प्रारंभ करना चाहते हैं (यहां, @ ) तर्क स्तंभ वह स्तंभ है जिससे आप सबस्ट्रिंग पुनर्प्राप्त करना चाहते हैं; यह एक शाब्दिक स्ट्रिंग भी हो सकता है।

SUBSTRING() . का तीसरा तर्क फ़ंक्शन सबस्ट्रिंग की लंबाई है। आप CHARINDEX() . का उपयोग करके इसकी गणना कर सकते हैं और LEN() कार्य। ऐसा आप कॉलम की लंबाई से इंडेक्स घटाकर और फिर 1:

. जोड़कर करते हैं
LEN(email) - CHARINDEX('@', email) + 1

आप एक ऐसे सबस्ट्रिंग को पुनः प्राप्त करना चाह सकते हैं जो स्ट्रिंग के अंत में समाप्त नहीं होता है, लेकिन कुछ विशिष्ट वर्ण पर, उदाहरण के लिए, '. से पहले। '। यहां बताया गया है कि आप यह कैसे कर सकते हैं:

SELECT
  email,
  SUBSTRING(email, CHARINDEX('@', email), CHARINDEX('.', email) - CHARINDEX('@', email)) AS substring
FROM emails;

इस क्वेरी का परिणाम है:

ईमेल सबस्ट्रिंग
[email protected] @gmail
[email protected] @zoho
[email protected] @याहू
[email protected] @onet

भाग CHARINDEX('.', email) - CHARINDEX('@', email) बस सबस्ट्रिंग की लंबाई की गणना करता है।


  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. MSDB पर रखरखाव का महत्व

  3. प्रदर्शन आश्चर्य और अनुमान :DatedIFF

  4. टी-एसक्यूएल में किसी तिथि में दिन कैसे जोड़ें

  5. हमेशा चालू रहने के लिए रीड-ओनली रूटिंग