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

Oracle/SQLite में एक स्ट्रिंग से सबस्ट्रिंग कैसे निकालें?

समस्या:

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

उदाहरण 1:

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

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

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

समाधान 1:

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

नतीजा यह है:

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

चर्चा:

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

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

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

उदाहरण 2:

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

समाधान 2:

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

नतीजा यह है:

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

चर्चा:

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

उदाहरण 3:

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

समाधान 3:

SELECT
  email,
  SUBSTR(email, INSTR(email, '@'), LENGTH(email) - INSTR(email, '@') + 1) AS substring
FROM emails;

नतीजा यह है:

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

चर्चा:

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

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

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

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

SELECT
  email,
  SUBSTR(email, INSTR(email, '@'), INSTR(email, '.') - INSTR(email, '@')) AS substring
FROM emails;

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

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

भाग INSTR(email, '.') - INSTR(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. 12सी वचर2(32767)

  3. सी # को ओरेकल से जोड़ना

  4. Oracle में दो टाइमस्टैम्प के बीच अंतर की गणना कैसे करें

  5. एसक्यूएल * प्लस हमेशा निकास कोड 0 देता है?