ใช้ FIND_IN_SET() ค้นหาค่าในคอลัมน์ที่เก็บเป็นรายการคั่นจุลภาค
mysql> CREATE TABLE DemoTable1548 (
-> StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> StudentName VARCHAR(20),
-> ArrayListOfMarks VARCHAR(100)
-> );
Query OK, 0 rows affected (0.88 sec)
mysql> INSERT INTO DemoTable1548(StudentName, ArrayListOfMarks) VALUES('Chris', '56,78,90,87');
Query OK, 1 row affected (0.29 sec)
mysql> INSERT INTO DemoTable1548(StudentName, ArrayListOfMarks) VALUES('Bob', '90,78,65');
Query OK, 1 row affected (0.14 sec)
mysql> INSERT INTO DemoTable1548(StudentName, ArrayListOfMarks) VALUES('David', '91,34,56,78,87');
Query OK, 1 row affected (0.16 sec)
mysql> SELECT * FROM DemoTable1548;
+-----------+-------------+------------------+ | StudentId | StudentName | ArrayListOfMarks | +-----------+-------------+------------------+ | 1 | Chris | 56,78,90,87 | | 2 | Bob | 90,78,65 | | 3 | David | 91,34,56,78,87 | +-----------+-------------+------------------+ 3 rows in set (0.00 sec)
ค้นหานักเรียนที่มีคะแนน 87 ในรายการ:
mysql> SELECT * FROM DemoTable1548 WHERE FIND_IN_SET('87', ArrayListOfMarks);
+-----------+-------------+------------------+ | StudentId | StudentName | ArrayListOfMarks | +-----------+-------------+------------------+ | 1 | Chris | 56,78,90,87 | | 3 | David | 91,34,56,78,87 | +-----------+-------------+------------------+ 2 rows in set (0.00 sec)
ข้อจำกัด: ไม่ใช้ดัชนีได้ เหมาะกับข้อมูลเล็กหรือไม่ค่อยค้นหา ควรพิจารณา Normalize ตารางแยกเก็บคะแนน