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

ตรวจสอบค่าในรายการที่คั่นด้วยเครื่องหมายจุลภาคใน MySQL

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