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
我想从我的 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