Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

ค้นหาข้อมูลในคอลัมน์ค่าคั่นด้วยจุลภาค (Comma-separated) ใน MySQL

บทความนี้สาธิตการค้นหาค่าในคอลัมน์ที่เก็บข้อมูลเป็นลิสต์คั่นด้วยจุลภาค (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) แทนเพื่อประสิทธิภาพและความถูกต้อง