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

Truy vấn triển khai LIKE như IN trong MySQL

Mô phỏng hành vi IN() bằng LIKE và COUNT/IF trong MySQL

Đếm số bản ghi chứa các từ khóa cụ thể trong cột văn bản.

Tạo bảng và dữ liệu

mysql> create table DemoTable ( Subject varchar(80) ); 
Query OK, 0 rows affected (0.58 sec)
mysql> insert into DemoTable values('MySQLMongoDB'); 
mysql> insert into DemoTable values('MySQL'); 
mysql> insert into DemoTable values('JavaMySQL'); 
mysql> insert into DemoTable values('MongoDB'); 
mysql> insert into DemoTable values('Java');

Truy vấn đếm theo từ khóa

mysql> select 
    count(if(Subject like '%MySQL%',1,NULL)) as MySQLCount, 
    count(if(Subject like '%Java%',1,NULL)) as JavaCount, 
    count(if(Subject like '%MongoDB%',1,NULL)) as MongoDBCount 
    from DemoTable;

Kết quả

+------------+-----------+--------------+ 
| MySQLCount | JavaCount | MongoDBCount | 
+------------+-----------+--------------+ 
| 3          | 2         | 2            | 
+------------+-----------+--------------+

Giải thích:

  • MySQLCount = 3: 'MySQLMongoDB', 'MySQL', 'JavaMySQL' chứa 'MySQL'
  • JavaCount = 2: 'JavaMySQL', 'Java' chứa 'Java'
  • MongoDBCount = 2: 'MySQLMongoDB', 'MongoDB' chứa 'MongoDB'

Lưu ý: Một bản ghi có thể được đếm trong nhiều nhóm (ví dụ 'MySQLMongoDB' tính cho cả MySQL và MongoDB). Đây khác với IN() thuần túy - IN() kiểm tra giá trị chính xác, LIKE kiểm tra chuỗi con.