पंक्ति खोजने के लिए FIND_IN_SET() का उपयोग करें।
टेबल बनाएं
mysql> create table DemoTable (
-> ListOfIds varchar(200)
-> );
Query OK, 0 rows affected (0.72 sec)
रिकॉर्ड्स डालें
mysql> insert into DemoTable values('100,2093,678,686');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable values('0595,9585,4885,95959');
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable values('0059954,95986884,9059596,9005');
Query OK, 1 row affected (0.20 sec)
सभी रिकॉर्ड्स देखें
mysql> select * from DemoTable;
+-------------------------------+ | ListOfIds | +-------------------------------+ | 100,2093,678,686 | | 0595,9585,4885,95959 | | 0059954,95986884,9059596,9005 | +-------------------------------+ 3 rows in set (0.00 sec)
कॉमा से अलग आईडी में विशिष्ट मान खोजने का क्वेरी
mysql> select * from DemoTable where FIND_IN_SET('9005', ListOfIds);
आउटपुट:
+-------------------------------+ | ListOfIds | +-------------------------------+ | 0059954,95986884,9059596,9005 | +-------------------------------+ 1 row in set (0.00 sec)
व्याख्या:
FIND_IN_SET(str, strlist)-strlistमेंstrकी स्थिति लौटाता है (1-आधारित)- यदि नहीं मिला तो 0 लौटाता है
WHERE FIND_IN_SET(...)सत्य मानता है यदि परिणाम > 0- चेतावनी: यह फ़ंक्शन इंडेक्स का उपयोग नहीं करता, बड़ी टेबल्स पर धीमा हो सकता है
बेहतर डिज़ाइन: कई मानों को एक कॉलम में संग्रहीत करने के बजाय, अलग जंक्शन टेबल का उपयोग करें (सामान्यीकरण)।