我想通过搜索特定列中的某些字词来选择一行。
这是我提出的,但它显然不起作用:
SELECT *
FROM 'list'
WHERE 'Name' LIKE '%cat%' AND '%bengal%' AND 'Color' LIKE '%navy%'`
基本上我想找到这一行:
ID | Name | Color
---+------------------+-------------
1 | Stuff | Stuff
2 | cat weird bengal | navy -> THIS
3 | cat weird bengal | blue
4 | Other stuff | stuff
5 | dog bengal | navy
我在这里搜索过,但只找到了建议OR
的人,但是,正如您从示例表中看到的那样,我无法使用它(或者它会与ID:5匹配)。
有没有办法说LIKE
'这个'并且'那'
答案 0 :(得分:6)
您可以使用相同的列两次:
SELECT *
FROM list
WHERE Name LIKE '%cat%'
AND Name LIKE '%bengal%'
AND Color LIKE '%navy%';
正如Jorge Campos提到的,如果提前知道订单,您可以使用单LIKE
:
SELECT *
FROM list
WHERE Name LIKE '%cat%bengal%'
AND Color LIKE '%navy%';
无论如何,您的查询不是SARGable。我建议使用特定于RDBMS的FULL TEXT INDEX
。
答案 1 :(得分:0)
尝试以下。可能有帮助
SELECT *
FROM list
WHERE Name LIKE '%cat%'
and Name LIKE '%bengal%'
and Color LIKE '%navy%';
或
正如jorge所建议的
SELECT * FROM list WHERE Name LIKE '%cat%bengal%' and Color LIKE '%navy%';