MySQL में FIND_IN_SET() फ़ंक्शन कॉमा-सेपरेटेड स्ट्रिंग में मान खोजता है। अन्य विभाजकों (जैसे पाइप |) के लिए, पहले REPLACE() का उपयोग करके उन्हें कॉमा में बदलें।
उदाहरण: टेबल बनाना और डेटा डालना
mysql> CREATE TABLE DemoTable (
-> ListOfValues TEXT
-> );
Query OK, 0 rows affected (0.56 sec)
mysql> INSERT INTO DemoTable VALUES('10|20|30|40|50|60|100');
Query OK, 1 row affected (0.18 sec)
डेटा देखना
mysql> SELECT * FROM DemoTable;
आउटपुट
+-----------------------+ | ListOfValues | +-----------------------+ | 10|20|30|40|50|60|100 | +-----------------------+ 1 row in set (0.00 sec)
पाइप-सेपरेटेड मानों में खोज करना
mysql> SELECT FIND_IN_SET(100, REPLACE(ListOfValues, '|', ',')) FROM DemoTable;
आउटपुट
+-------------------------------------------------+ | FIND_IN_SET(100, REPLACE(ListOfValues, '|', ',')) | +-------------------------------------------------+ | 7 | +-------------------------------------------------+ 1 row in set (0.04 sec)
व्याख्या:
REPLACE(ListOfValues, '|', ',')पाइप को कॉमा में बदलता है:'10,20,30,40,50,60,100'FIND_IN_SET(100, ...)सूची में 100 की स्थिति खोजता है (1-आधारित इंडेक्स)- परिणाम 7 है क्योंकि 100 सातवें स्थान पर है
नोट: FIND_IN_SET स्ट्रिंग तुलना करता है, संख्यात्मक नहीं। बड़ी सूचियों के लिए प्रदर्शन धीमा हो सकता है। बेहतर डिज़ाइन के लिए जंक्शन टेबल (सामान्यीकृत स्कीमा) का उपयोग करने पर विचार करें।