เพื่อตรวจสอบว่าค่าหนึ่งมีอยู่ในรายการที่คั่นด้วยจุลภาค (comma-separated list) ให้ใช้ฟังก์ชัน FIND_IN_SET()
รูปแบบคำสั่ง
SELECT * FROM yourTableName WHERE FIND_IN_SET('yourValue', yourColumnName) > 0;
ตัวอย่างเต็ม
1. สร้างตาราง
mysql> create table existInCommaSeparatedList (
-> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> Name varchar(200)
-> );
2. เพิ่มข้อมูลทดสอบ
mysql> insert into existInCommaSeparatedList(Name) values('John,Carol,Sam,Larry,Bob,David');
mysql> insert into existInCommaSeparatedList(Name) values('Maxwell,Chris,James');
mysql> insert into existInCommaSeparatedList(Name) values('Robert,Ramit');
3. แสดงข้อมูลทั้งหมด
mysql> select * from existInCommaSeparatedList;
+----+--------------------------------+ | Id | Name | +----+--------------------------------+ | 1 | John,Carol,Sam,Larry,Bob,David | | 2 | Maxwell,Chris,James | | 3 | Robert,Ramit | +----+--------------------------------+
4. ค้นหาค่า "Robert"
mysql> SELECT * FROM existInCommaSeparatedList WHERE FIND_IN_SET('Robert', Name) > 0;
+----+--------------+ | Id | Name | +----+--------------+ | 3 | Robert,Ramit | +----+--------------+
ข้อควรระวัง
FIND_IN_SET()ทำงานได้เฉพาะกับสตริงที่คั่นด้วยจุลภาค (,) เท่านั้น- ไม่ควรใช้กับข้อมูลจำนวนมาก เพราะไม่สามารถใช้ดัชนี (index) ได้
- แนะนำให้ปรับโครงสร้างฐานข้อมูลเป็นแบบปกติ (normalize) แทนการเก็บค่าหลายค่าในคอลัมน์เดียว