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