MySQL में SUBSTRING_INDEX() फ़ंक्शन का उपयोग करके कॉमा से अलग स्ट्रिंग से विशिष्ट स्थिति का मान निकाला जा सकता है।
सिंटैक्स
SUBSTRING_INDEX(SUBSTRING_INDEX(str, delim, n), delim, -1)
यह n-वें डिलिमिटर के बाद के भाग को लौटाता है।
उदाहरण
तालिका बनाएं:
mysql> CREATE TABLE DemoTable (ListOfSubject TEXT);
mysql> INSERT INTO DemoTable VALUES ('Python,Java,MySQL,MongoDB,C,C++,ASP.net');
डेटा
+-----------------------------------------+
| ListOfSubject |
+-----------------------------------------+
| Python,Java,MySQL,MongoDB,C,C++,ASP.net |
+-----------------------------------------+
क्वेरी: 4th मान प्राप्त करें (MongoDB)
mysql> SELECT SUBSTRING_INDEX(
-> SUBSTRING_INDEX(ListOfSubject, ',', 4),
-> ',', -1
-> ) AS Position FROM DemoTable;
चरण-दर-चरण
SUBSTRING_INDEX(ListOfSubject, ',', 4)→ 'Python,Java,MySQL,MongoDB' (पहले 4 भाग)SUBSTRING_INDEX(..., ',', -1)→ 'MongoDB' (अंतिम भाग)
परिणाम
+----------+
| Position |
+----------+
| MongoDB |
+----------+
सामान्य पैटर्न
| स्थिति | क्वेरी |
|---|---|
| पहला | SUBSTRING_INDEX(str, ',', 1) |
| n-वां | SUBSTRING_INDEX(SUBSTRING_INDEX(str, ',', n), ',', -1) |
| अंतिम | SUBSTRING_INDEX(str, ',', -1) |
MySQL 8.0+ विकल्प
-- JSON_TABLE के साथ (यदि वैध JSON में बदल सकते हैं)
-- या रिकर्सिव CTE का उपयोग करें
चेतावनी
- स्थिति 1-आधारित है
- यदि स्थिति सीमा से बाहर है तो खाली स्ट्रिंग लौटाता है
- NULL इनपुट पर NULL लौटाता है
- बड़े डेटासेट पर प्रदर्शन समस्या हो सकती है
सुझाव: नॉर्मलाइज़्ड स्कीमा (अलग पंक्तियां) बेहतर डिज़ाइन है।