FIND_IN_SET(str, strlist) फ़ंक्शन कॉमा-सेपरेटेड स्ट्रिंग सूची में किसी स्ट्रिंग की स्थिति (1-आधारित) लौटाता है। यह IN से अलग है; यह सटीक पूर्ण-तत्व मिलान करता है।
टेबल बनाएं
mysql> CREATE TABLE DemoTable1866 (
Value1 INT,
ListOfValues VARCHAR(100)
);
डेटा डालें
mysql> INSERT INTO DemoTable1866 VALUES(56, '78,56,98,95'); mysql> INSERT INTO DemoTable1866 VALUES(103, '103,90,102,104'); mysql> INSERT INTO DemoTable1866 VALUES(77, '34,45,77,78');
स्थिति खोजें
mysql> SELECT Value1, ListOfValues,
FIND_IN_SET(Value1, ListOfValues) AS Output
FROM DemoTable1866;
आउटपुट:
+--------+----------------+--------+ | Value1 | ListOfValues | Output | +--------+----------------+--------+ | 56 | 78,56,98,95 | 2 | | 103 | 103,90,102,104 | 1 | | 77 | 34,45,77,78 | 3 | +--------+----------------+--------+
महत्वपूर्ण नियम
- सूची में कोई स्पेस नहीं होना चाहिए:
'1,2,3'ठीक,'1, 2, 3'गलत (स्पेस के कारण मेल नहीं)। strlistNULL होने पर NULL लौटाता है।- नहीं मिलने पर 0 लौटाता है।
- केस-इनसेंसिटिव (डिफ़ॉल्ट कोलेशन अनुसार)।
WHERE क्लॉज में उपयोग
SELECT * FROM DemoTable1866 WHERE FIND_IN_SET(Value1, ListOfValues) > 0;
चेतावनी
FIND_IN_SETइंडेक्स उपयोग नहीं कर सकता; बड़ी टेबल पर धीमा।- सामान्यीकृत डिज़ाइन (अलग टेबल) बेहतर है संबंधपरक डेटा के लिए।
- MySQL 8.0+ में
JSON_CONTAINSJSON सरणी के लिए बेहतर विकल्प।