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

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

समस्या:

PostgreSQL/MySQL में एक स्ट्रिंग से सबस्ट्रिंग कैसे निकालें

उदाहरण 1:

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

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

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

समाधान 1:

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

एक और सिंटैक्स:

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

नतीजा यह है:

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

चर्चा:

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

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

SUBSTRING(email, 1, 7) ईमेल कॉलम में मानों के सबस्ट्रिंग लौटाएगा जो स्ट्रिंग्स (प्रथम वर्ण) की शुरुआत में शुरू होता है और सात वर्णों के लिए जाता है। अन्य संकेतन, SUBSTRING(email FROM 1 FOR 7) , ठीक वैसा ही करता है। FROM . के बाद का तर्क प्रारंभिक अनुक्रमणिका है, और FOR . के बाद तर्क है सबस्ट्रिंग लंबाई है।

SUBSTRING() . का तीसरा तर्क समारोह वैकल्पिक है। यदि आप इसे छोड़ देते हैं, तो आपको वह सबस्ट्रिंग मिल जाएगी जो दूसरे तर्क में अनुक्रमणिका से शुरू होती है और स्ट्रिंग के अंत तक जाती है। SUBSTRING(email, 1) पूरी स्ट्रिंग लौटाएगा, ठीक वैसे ही जैसे SUBSTRING(email FROM 1)

उदाहरण 2:

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

समाधान 2:

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

एक और सिंटैक्स:

SELECT
  email,
  SUBSTRING(email FROM POSITION('@' IN email)) AS substring
FROM emails;

नतीजा यह है:

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

चर्चा:

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

यदि आप चाहते हैं कि सबस्ट्रिंग मूल स्ट्रिंग के अंत तक जाए, तो SUBSTRING() में तीसरा तर्क फ़ंक्शन (या FOR तर्क) की आवश्यकता नहीं है। अन्यथा, यह सबस्ट्रिंग की लंबाई होनी चाहिए, या आप POSITION() का उपयोग करके इसकी गणना कर सकते हैं समारोह। आप एक ऐसे सबस्ट्रिंग को भी पुनः प्राप्त करना चाह सकते हैं जो स्ट्रिंग के अंत में समाप्त नहीं होता है, लेकिन कुछ विशिष्ट वर्ण पर, उदाहरण के लिए, '.' से पहले। यहां एक उदाहरण दिया गया है:

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

एक और सिंटैक्स:

SELECT
  email,
  SUBSTRING(email FROM POSITION('@' IN email) FOR POSITION('.' IN email) - POSITION('@' IN email)) AS substring
FROM emails;

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

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

भाग POSITION('.' IN email) - POSITION('@' IN 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. mysql_num_rows ():आपूर्ति किया गया तर्क मान्य MySQL परिणाम संसाधन नहीं है

  2. ऑटो वेतन वृद्धि प्राथमिक कुंजी को पुन:व्यवस्थित / रीसेट करें

  3. MySQL में अग्रणी / अनुगामी वर्णों के साथ एक स्ट्रिंग को कैसे पैड करें - LPAD (), RPAD ()

  4. संख्या को 2 दशमलव स्थानों पर प्रारूपित करें

  5. पुराने प्रमाणीकरण का उपयोग करके MySQL 4.1+ से कनेक्ट नहीं हो सकता