Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL में कॉमा से अलग स्ट्रिंग से विशिष्ट स्थिति का मान कैसे प्राप्त करें?

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;

चरण-दर-चरण

  1. SUBSTRING_INDEX(ListOfSubject, ',', 4) → 'Python,Java,MySQL,MongoDB' (पहले 4 भाग)
  2. 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 लौटाता है
  • बड़े डेटासेट पर प्रदर्शन समस्या हो सकती है

सुझाव: नॉर्मलाइज़्ड स्कीमा (अलग पंक्तियां) बेहतर डिज़ाइन है।

  1. - MySQL में FIND_IN_SET से कॉमा-सेपरेटेड कॉलम में मान की स्थिति खोजें

    FIND_IN_SET(str, strlist) फ़ंक्शन कॉमा-सेपरेटेड स्ट्रिंग सूची में किसी स्ट्रिंग की स्थिति (1-आधारित) लौटाता है। यह IN से अलग है; यह सटीक पूर्ण-तत्व मिलान करता है। टेबल बनाएं mysql> CREATE TABLE DemoTable1866 ( Value1 INT, ListOfValues VARCHAR(100) ); डेटा डालें mysql> INSERT INTO Dem

  1. - MySQL में SELECT INTO वेरिएबल से विशिष्ट पंक्ति का एकल मान प्राप्त करें

    SELECT column INTO @variable FROM table WHERE condition का उपयोग करके एकल पंक्ति का एकल मान यूज़र-डिफ़ाइन्ड वेरिएबल में संग्रहीत करें। टेबल बनाएं mysql> CREATE TABLE DemoTable1896 ( StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY, StudentName VARCHAR(20), StudentMarks INT ); डेटा

  1. - MySQL में विशिष्ट पंक्ति प्राप्त करना

    WHERE, ORDER BY और LIMIT से विशिष्ट पंक्ति चुनें टेबल बनाएं और डेटा डालें: mysql> create table DemoTable1972 ( Section char(1), StudentName varchar(20) ); Query OK, 0 rows affected (0.00 sec) mysql> insert into DemoTable1972 values(D,Chris); ... क्वेरी: C से बड़े सेक्शन को क्रमबद्ध करके पहले 2