Thay vì cố gắng kết hợp LIKE và IN trong một truy vấn (không được hỗ trợ trực tiếp), bạn có thể sử dụng biểu thức chính quy (REGEXP) để đạt được hiệu quả tương tự với hiệu suất tốt hơn.
Tạo bảng và dữ liệu mẫu
mysql> CREATE TABLE DemoTable (
-> Name VARCHAR(30)
-> );
Query OK, 0 rows affected (0.62 sec)
mysql> INSERT INTO DemoTable VALUES('John');
Query OK, 1 row affected (0.13 sec)
mysql> INSERT INTO DemoTable VALUES('Chris');
Query OK, 1 row affected (0.14 sec)
mysql> INSERT INTO DemoTable VALUES('Robert');
Query OK, 1 row affected (0.16 sec)
mysql> INSERT INTO DemoTable VALUES('David');
Query OK, 1 row affected (0.17 sec)
Hiển thị dữ liệu
mysql> SELECT * FROM DemoTable;
+--------+ | Name | +--------+ | John | | Chris | | Robert | | David | +--------+ 4 rows in set (0.00 sec)
Sử dụng REGEXP thay thế LIKE + IN
Thay vì viết WHERE Name LIKE 'John' OR Name LIKE 'Robert' OR Name LIKE 'David', hãy dùng:
mysql> SELECT * FROM DemoTable WHERE Name REGEXP 'John|Robert|David';
Kết quả:
+--------+ | Name | +--------+ | John | | Robert | | David | +--------+ 3 rows in set (0.11 sec)
Giải thích: Ký tự | trong REGEXP đóng vai trò như toán tử OR, cho phép khớp với bất kỳ mẫu nào được liệt kê.