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

MySQL LIKE IN() - ใช้ REGEXP แทน

ปัญหา

MySQL ไม่มีคำสั่ง LIKE IN() โดยตรง แต่สามารถทำได้ด้วย Regular Expression (REGEXP)

รูปแบบคำสั่ง

SELECT * FROM yourTableName 
WHERE yourColumnName REGEXP 'value1|value2|value3|...|valueN';

ตัวอย่าง

สร้างตารางและข้อมูล

mysql> create table INDemo (Id int, Name varchar(100));
mysql> insert into INDemo values(100,'John'),(104,'Carol'),(108,'David'),(112,'Smith'),(116,'Johnson'),(120,'Sam');

ใช้ REGEXP (เหมือน IN)

mysql> select * from INDemo where Id REGEXP '112|116|100';
+------+---------+
| Id   | Name    |
+------+---------+
| 100  | John    |
| 112  | Smith   |
| 116  | Johnson |
+------+---------+
3 rows in set (0.21 sec)

เปรียบเทียบกับ IN()

mysql> select * from INDemo where Id IN(112,116,100);
+------+---------+
| Id   | Name    |
+------+---------+
| 100  | John    |
| 112  | Smith   |
| 116  | Johnson |
+------+---------+
3 rows in set (0.00 sec)

ผลลัพธ์เหมือนกัน

REGEXP ด้วย Pattern '112|116|100' ให้ผลลัพธ์เท่ากับ IN(112,116,100)

ข้อดีของ REGEXP

  • รองรับ Pattern ซับซ้อน (Wildcard, Character Class, Quantifier)
  • ใช้กับ String ได้ (IN() ต้องการค่าที่ตรงเป๊ะ)

หมายเหตุ: REGEXP ช้ากว่า IN() สำหรับค่าคงที่หลายค่า ควรใช้ IN() หากเป็นไปได้