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

ค้นหาแถวที่มี ID หลายค่าคั่นด้วยจุลภาคใน MySQL

ใช้ฟังก์ชัน FIND_IN_SET() ค้นหาค่าในสตริงที่คั่นด้วยจุลภาค

สร้างตารางตัวอย่าง

mysql> CREATE TABLE DemoTable (
    -> ListOfIds VARCHAR(200)
    -> );

เพิ่มข้อมูลตัวอย่าง

mysql> INSERT INTO DemoTable VALUES('100,2093,678,686');
mysql> INSERT INTO DemoTable VALUES('0595,9585,4885,95959');
mysql> INSERT INTO DemoTable VALUES('0059954,95986884,9059596,9005');

แสดงข้อมูล

mysql> SELECT * FROM DemoTable;

ผลลัพธ์:

+-------------------------------+
| ListOfIds                     |
+-------------------------------+
| 100,2093,678,686              |
| 0595,9585,4885,95959          |
| 0059954,95986884,9059596,9005 |
+-------------------------------+

คำสั่งค้นหาแถวที่มี 9005

mysql> SELECT * FROM DemoTable WHERE FIND_IN_SET('9005', ListOfIds);

ผลลัพธ์:

+-------------------------------+
| ListOfIds                     |
+-------------------------------+
| 0059954,95986884,9059596,9005 |
+-------------------------------+

คำอธิบาย: FIND_IN_SET(needle, haystack) คืนค่าตำแหน่ง (1-based) หากเจอ หรือ 0 หากไม่เจอ ใช้ใน WHERE ได้โดยตรง เหมาะกับข้อมูลที่เก็บ ID หลายค่าในคอลัมน์เดียว (denormalized)