บทความนี้สาธิตการค้นหาค่าในคอลัมน์ที่เก็บข้อมูลเป็นลิสต์คั่นด้วยจุลภาค (CSV format) โดยใช้ LIKE พร้อม Pattern ครอบคลุมทุกตำแหน่งที่ค่าอาจอยู่
สร้างตารางและข้อมูลทดสอบ
mysql> CREATE TABLE DemoTable675 (Value TEXT);
Query OK, 0 rows affected (0.55 sec)
mysql> INSERT INTO DemoTable675 VALUES('10,56,49484,93993,211,4594');
mysql> INSERT INTO DemoTable675 VALUES('4,7,1,10,90,23');
mysql> INSERT INTO DemoTable675 VALUES('90,854,56,89,10');
mysql> INSERT INTO DemoTable675 VALUES('11,22,344,67,89');
คิวรีค้นหาค่า 10 (ครอบคลุมทุกตำแหน่ง)
mysql> SELECT * FROM DemoTable675
WHERE Value LIKE '10,%'
OR Value LIKE '%,10'
OR Value LIKE '%,10,%'
OR Value = '10';
ผลลัพธ์
+----------------------------+
| Value |
+----------------------------+
| 10,56,49484,93993,211,4594 |
| 4,7,1,10,90,23 |
| 90,854,56,89,10 |
+----------------------------+
คำอธิบาย Pattern:
'10,%'- อยู่ต้นสตริง ตามด้วยจุลภาค'%,10'- อยู่ท้ายสตริง นำหน้าด้วยจุลภาค'%,10,%'- อยู่กลางสตริง คั่นด้วยจุลภาคทั้งสองข้าง'10'- เป็นค่าเดียวในสตริง
ข้อควรระวัง: การเก็บข้อมูลแบบ CSV ในคอลัมน์เดียว違反 Normalization ควรแยกตารางความสัมพันธ์ (Many-to-Many) แทนเพื่อประสิทธิภาพและความถูกต้อง