ใช้ฟังก์ชัน FIND_IN_SET() ค้นหาค่าในสตริงที่คั่นด้วยจุลภาค
สร้างตารางตัวอย่าง
mysql> CREATE TABLE DemoTable (
-> ListOfIds VARCHAR(200)
-> );
เพิ่มข้อมูลตัวอย่าง
mysql> INSERT INTO DemoTable VALUES('100,2093,678,686');
mysql> INSERT INTO DemoTable VALUES('0595,9585,4885,95959');
mysql> INSERT INTO DemoTable VALUES('0059954,95986884,9059596,9005');
แสดงข้อมูล
mysql> SELECT * FROM DemoTable;
ผลลัพธ์:
+-------------------------------+ | ListOfIds | +-------------------------------+ | 100,2093,678,686 | | 0595,9585,4885,95959 | | 0059954,95986884,9059596,9005 | +-------------------------------+
คำสั่งค้นหาแถวที่มี 9005
mysql> SELECT * FROM DemoTable WHERE FIND_IN_SET('9005', ListOfIds);
ผลลัพธ์:
+-------------------------------+ | ListOfIds | +-------------------------------+ | 0059954,95986884,9059596,9005 | +-------------------------------+
คำอธิบาย: FIND_IN_SET(needle, haystack) คืนค่าตำแหน่ง (1-based) หากเจอ หรือ 0 หากไม่เจอ ใช้ใน WHERE ได้โดยตรง เหมาะกับข้อมูลที่เก็บ ID หลายค่าในคอลัมน์เดียว (denormalized)