MySQL में FIND_IN_SET() के साथ CSV मान खोजना
MySQL का FIND_IN_SET() फ़ंक्शन कॉमा-पृथक स्ट्रिंग सूची में किसी स्ट्रिंग की स्थिति ढूंढता है। यह कॉमा-पृथक मान (CSV) कॉलम में मान खोजने के लिए आदर्श है।
उदाहरण: देश कोड खोजना
पहले CSV देश कोड वाली एक टेबल बनाते हैं:
mysql> CREATE TABLE DemoTable1439 (
-> CountryId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> CountryCode VARCHAR(20)
-> );
Query OK, 0 rows affected (0.49 sec)
mysql> INSERT INTO DemoTable1439 (CountryCode) VALUES
-> ('1022_US,7894_UK'), ('6567_AUS,7894_UK'), ('6567_AUS');
Query OK, 3 rows affected (0.14 sec)
mysql> SELECT * FROM DemoTable1439;
+-----------+------------------+
| CountryId | CountryCode |
+-----------+------------------+
| 1 | 1022_US,7894_UK |
| 2 | 6567_AUS,7894_UK |
| 3 | 6567_AUS |
+-----------+------------------+
3 rows in set (0.00 sec)
FIND_IN_SET() क्वेरी
mysql> SELECT * FROM DemoTable1439
-> WHERE FIND_IN_SET('6567_AUS', CountryCode) > 0;
परिणाम
+-----------+------------------+ | CountryId | CountryCode | +-----------+------------------+ | 2 | 6567_AUS,7894_UK | | 3 | 6567_AUS | +-----------+------------------+ 2 rows in set (0.00 sec)
FIND_IN_SET() कैसे काम करता है
- यदि स्ट्रिंग मिलती है तो स्थिति (1-आधारित) लौटाता है
- यदि नहीं मिलता तो 0 लौटाता है
- यदि कोई तर्क NULL है तो NULL लौटाता है
- केस-संवेदनशील तुलना (डिफ़ॉल्ट कॉलेशन के आधार पर)
FIND_IN_SET() बनाम LIKE
| पहलू | FIND_IN_SET() | LIKE '%val%' |
|---|---|---|
| सटीक मिलान | हां (पूर्ण टोकन) | नहीं (आंशिक मिलान) |
| प्रदर्शन | धीमा (कोई इंडेक्स उपयोग नहीं) | धीमा (कोई इंडेक्स उपयोग नहीं) |
| NULL संचालन | NULL लौटाता है | NULL लौटाता है |