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 अधिक पठनीय और सटीक है।