我一直认为您可以在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%';
我是否正确地解决了这个问题?
答案 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%')
注意:搜索字符串开头的“%”排除了索引的使用。如果要搜索大量记录,最好重新考虑实现。