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

MySQL में कॉमा से अलग मान वाले कॉलम से विशिष्ट रिकॉर्ड कैसे खोजें?

MySQL में कॉमा से अलग मानों वाले कॉलम में विशिष्ट मान खोजने के लिए FIND_IN_SET() फ़ंक्शन का उपयोग करें। यह CSV डेटा के लिए अनुकूलित है।

सिंटैक्स

FIND_IN_SET(search_string, comma_separated_column)

लौटाता है: स्थिति (1-आधारित) यदि मिला, 0 यदि नहीं मिला, NULL यदि कोई तर्क NULL है।

उदाहरण

तालिका बनाएं और CSV डेटा डालें:

mysql> CREATE TABLE DemoTable (ListOfValue VARCHAR(20));
mysql> INSERT INTO DemoTable VALUES 
    -> ('78,89,65'), ('88,96,97'), ('95,96,99,100'), ('78,45,67,98');

डेटा

+--------------+
| ListOfValue  |
+--------------+
| 78,89,65     |
| 88,96,97     |
| 95,96,99,100 |
| 78,45,67,98  |
+--------------+

क्वेरी: 89 या 99 वाली पंक्तियां खोजें

mysql> SELECT * FROM DemoTable
    -> WHERE FIND_IN_SET('89', ListOfValue)
    ->    OR FIND_IN_SET('99', ListOfValue);

परिणाम

+--------------+
| ListOfValue  |
+--------------+
| 78,89,65     |
| 95,96,99,100 |
+--------------+

महत्वपूर्ण नोट्स

  • FIND_IN_SET कॉमा-सूची में सटीक मिलान करता है (उपस्ट्रिंग नहीं)
  • '89' '89' से मेल खाता है, लेकिन '890' या '189' से नहीं
  • बड़े डेटासेट पर धीमा हो सकता है (इंडेक्स उपयोग नहीं कर सकता)
  • बेहतर डिज़ाइन: जंक्शन तालिका के साथ नॉर्मलाइज़्ड स्कीमा

विकल्प: LIKE (कम सटीक)

WHERE ListOfValue LIKE '%,89,%' 
   OR ListOfValue LIKE '89,%' 
   OR ListOfValue LIKE '%,89'
   OR ListOfValue = '89'

FIND_IN_SET अधिक पठनीय और सटीक है।

  1. MySQL में विशिष्ट कॉलम नाम वाली टेबल कैसे खोजें MySQL में विशिष्ट कॉलम नाम वाली टेबल कैसे खोजें

    information_schema.columns टेबल को क्वेरी करके डेटाबेस में विशिष्ट कॉलम नाम वाली सभी टेबल खोजें। सिंटैक्स SELECT DISTINCT table_name FROM information_schema.columns WHERE column_name LIKE %yourSearchValue% AND table_schema = DATABASE(); उदाहरण: Client वाली कॉलम खोजना SELECT DISTINCT table_name FR

  1. - MySQL में कॉमा सेपरेटेड मानों के साथ रैंडम पंक्तियाँ कैसे प्राप्त करें?

    MySQL में रैंडम पंक्तियाँ प्राप्त करने के लिए ORDER BY RAND() का उपयोग किया जाता है। यदि आपके कॉलम में कॉमा सेपरेटेड मान हैं, तो आप NOT IN के साथ फ़िल्टर करके रैंडम परिणाम ले सकते हैं। टेबल बनाएं और डेटा डालें mysql> CREATE TABLE DemoTable1835 ( ListOfIds VARCHAR(20) ); mysql> INSERT INT

  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