Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Có thể kết hợp toán tử IN và LIKE trong MySQL không?

Có, có thể kết hợp IN và LIKE trong MySQL bằng cách sử dụng LIKE và OR.

Tạo bảng demo

mysql> create table DemoTable (
    -> SubjectTitle text
    -> );
Query OK, 0 rows affected (0.68 sec)

Chèn dữ liệu

mysql> insert into DemoTable values('Introduction To MySQL');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable values('Java in Depth');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable values('Coding with Python');
Query OK, 1 row affected (0.54 sec)
mysql> insert into DemoTable values('C++ in Depth');
Query OK, 1 row affected (0.17 sec)

Hiển thị dữ liệu

mysql> select * from DemoTable;

Kết quả

+-----------------------+
| SubjectTitle          |
+-----------------------+
| Introduction To MySQL |
| Java in Depth         |
| Coding with Python    |
| C++ in Depth          |
+-----------------------+
4 rows in set (0.00 sec)

Truy vấn kết hợp LIKE và OR (tương đương IN với pattern)

mysql> select * from DemoTable where SubjectTitle LIKE '%MySQL%' OR SubjectTitle LIKE 'C++%';

Kết quả

+-----------------------+
| SubjectTitle          |
+-----------------------+
| Introduction To MySQL |
| C++ in Depth          |
+-----------------------+
2 rows in set (0.00 sec)

Giải thích: MySQL không hỗ trợ trực tiếp WHERE cot IN (LIKE 'pattern1', LIKE 'pattern2'). Cách phổ biến là dùng nhiều điều kiện LIKE ... OR LIKE ....

Thay thế hiện đại (MySQL 8.0+): Sử dụng REGEXP:

WHERE SubjectTitle REGEXP 'MySQL|^C\\+\\+'

Mẹo: Với nhiều pattern, có thể dùng bảng tạm hoặc CTE chứa các pattern rồi JOIN.