การใช้ FIND_IN_SET() ค้นหาค่าในรายการคั่นคอมมาที่เก็บใน User Variable
FIND_IN_SET(str, strlist) คืนตำแหน่ง (1-based) ของ str ใน strlist (คั่นคอมมา) คืน 0 หากไม่พบ ใช้ได้กับคอลัมน์หรือตัวแปร
สร้างตารางและข้อมูล
mysql> create table DemoTable1411 (
-> Value int
-> );
Query OK, 0 rows affected (0.50 sec)
mysql> insert into DemoTable1411 values(10);
mysql> insert into DemoTable1411 values(50);
mysql> insert into DemoTable1411 values(60);
ตั้งค่า User Variable
mysql> set @setOfValues := '70,50,100'; Query OK, 0 rows affected (0.00 sec)
คำสั่ง FIND_IN_SET กับ Variable
mysql> select * from DemoTable1411
-> where find_in_set(Value, @setOfValues);
ผลลัพธ์ (เฉพาะ 50 ที่อยู่ในชุด)
+-------+ | Value | +-------+ | 50 | +-------+
การทำงานของ FIND_IN_SET
FIND_IN_SET(50, '70,50,100')→ คืน 2 (ตำแหน่งที่ 2) → TRUEFIND_IN_SET(10, '70,50,100')→ คืน 0 → FALSEFIND_IN_SET(60, '70,50,100')→ คืน 0 → FALSE
FIND_IN_SET vs IN()
| ลักษณะ | FIND_IN_SET | IN() |
|---|---|---|
| Input | String (comma-separated) | Value list / Subquery |
| Data type | String comparison | Type-aware comparison |
| Performance | ช้ากว่า (string parse) | เร็วกว่า (optimizer รู้จัก) |
| Use case | ค่ามาจาก VARCHAR column/variable | Hard-coded list / Subquery |