MySQL LIKE 用法多于一列

MySQL LIKE Usage One Than More Columns

我想从我的 table 中 select 记录。我想使用这个查询:

select * 
from crawler.crawler_data 
WHERE name_surname, category, description LIKE "%de%";

但是MySQL不接受这个查询。我想用 LIKE 搜索所有列。我如何编写此查询以使用 LIKE 语句搜索多个列?

您可以使用 CONCAT:

SELECT * FROM crawler_data WHERE CONCAT(name_surname, category, description) LIKE "%de%";

所以它将您要检查的所有列连接到一个列中。

有时这可能不合适,您要查找的字符串可能会穿过两列之间的分隔线,因此会给您误报。

要解决此问题,您可以使用 CONCAT_WS,即 与分隔符 连接。所以:

SELECT * FROM crawler_data WHERE 
CONCAT_WS('-',name_surname, category, description) LIKE "%de%";

显然,将分隔符值 (-) 设置为搜索词 (de) 中不会包含的某种字符串。

参考:MySQL Manaul