【发布时间】:2017-06-16 14:42:26
【问题描述】:
我想从我的表中选择记录。我想使用这个查询:
select *
from crawler.crawler_data
WHERE name_surname, category, description LIKE "%de%";
但是 MySQL 不接受这个查询。我想用LIKE 搜索所有列。如何编写此查询以使用 LIKE 语句搜索多个列?
【问题讨论】:
我想从我的表中选择记录。我想使用这个查询:
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
【讨论】: