在MySQL中的LIKE查询中使用OR来比较多个字段

时间:2012-06-19 18:15:05

标签: mysql sql-like

我一直认为您可以在OR语句中使用LIKE来查询MySQL中的内容。因此,如果我想将一行中的多个字段与1个关键字或术语进行比较:

SELECT * FROM MyTable WHERE Column1 OR Column2 LIKE '%keyword%'; 

如果我有一系列要比较的单词:

SELECT * FROM MyTable WHERE Column1 OR Column2 LIKE '%keyword1%' 
AND Column1 OR Column2 LIKE '%keyword2%';
但是,我不相信语法是正确的。是否有一种有效的方法可以将其写为:

SELECT * FROM MyTable WHERE Column1 LIKE '%keyword1%' OR Column2 LIKE 
'%keyword1%' AND Column1 LIKE '%keyword2%' OR Column2 LIKE '%keyword2%';

我是否正确地解决了这个问题?

2 个答案:

答案 0 :(得分:29)

使用此::

SELECT * FROM MyTable WHERE (Column1 LIKE '%keyword1%' OR Column2 LIKE 
'%keyword1%') AND (Column1 LIKE '%keyword2%' OR Column2 LIKE '%keyword2%');

答案 1 :(得分:22)

最接近你想要的语法是:

SELECT * FROM MyTable
WHERE (CONCAT(Column1, Column2) LIKE '%keyword1%')
AND (CONCAT(Column1, Column2) LIKE '%keyword2%')

注意:搜索字符串开头的“%”排除了索引的使用。如果要搜索大量记录,最好重新考虑实现。