SQL LIKE查询有两个值?

时间:2018-03-14 18:46:25

标签: mysql sql

我想通过搜索特定列中的某些字词来选择一行。

这是我提出的,但它显然不起作用:

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'这个'并且'那'

2 个答案:

答案 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%';