MySQL में FIND_IN_SET() के साथ अल्पविराम से अलग सूची में मान खोजना
FIND_IN_SET() फ़ंक्शन अल्पविराम से अलग स्ट्रिंग सूची में किसी मान की स्थिति ढूंढता है। यह SET डेटा प्रकार या CSV स्ट्रिंग के लिए उपयोगी है।
व्यावहारिक उदाहरण
तालिका बनाना
mysql> CREATE TABLE DemoTable (
Id VARCHAR(255)
);
अल्पविराम से अलग मान डालना
mysql> INSERT INTO DemoTable VALUES('10,100,1000');
mysql> INSERT INTO DemoTable VALUES('101,120,2');
mysql> INSERT INTO DemoTable VALUES('3,4,5');
सभी रिकॉर्ड देखना
mysql> SELECT * FROM DemoTable;
आउटपुट:
+-------------+ | Id | +-------------+ | 10,100,1000 | | 101,120,2 | | 3,4,5 | +-------------+
मान '2' वाली पंक्ति खोजने के लिए क्वेरी
mysql> SELECT * FROM DemoTable
WHERE FIND_IN_SET('2', Id);
आउटपुट:
+-----------+ | Id | +-----------+ | 101,120,2 | +-----------+
FIND_IN_SET() विवरण
- पहला तर्क: खोजने वाला मान (स्ट्रिंग)
- दूसरा तर्क: अल्पविराम से अलग स्ट्रिंग सूची
- लौटाता है: स्थिति (1-आधारित), नहीं मिलने पर 0
- WHERE क्लॉज में 0 = FALSE, >0 = TRUE के रूप में काम करता है
महत्वपूर्ण सीमाएं
- केवल अल्पविराम (,) सेपरेटर के साथ काम करता है
- मानों में अल्पविराम नहीं होना चाहिए
- बड़े डेटासेट पर धीमा (इंडेक्स उपयोग नहीं कर सकता)
- सामान्यीकरण (Normalization) बेहतर डिज़ाइन है
बेहतर डिज़ाइन विकल्प