在SQL中使用LIKE进行多个搜索项的查询

6
我正在学习基础的 SQL 课程,目前学习基础知识,并在过滤方面遇到问题:
任务:列出所有行来自 TableName 表,其中 columnName 字段内容不包含以下任何单词:'stack' 或 'overflow' 或 'exampleword'。
SELECT columnName 
FROM TableName 
WHERE columnName NOT LIKE '%stack%' 

-> 我成功地让它与单个值一起正常工作,但是当我尝试添加更多单词作为值时,它就不再起作用了 ->

SELECT columnName 
FROM TableName 
WHERE columnName NOT LIKE '%stack%' OR columnName NOT LIKE '%overflow%'  

如何正确地使用多个搜索词的语法?

显然,我在这里也不应该使用CONTAINS,否则就太容易了。


3
你正在使用哪个数据库管理系统? - jarlh
1
Microsoft SQL Server -> 我们尽可能使用标准的SQL语言来先学习基础知识。 - Prestige
1个回答

11
你需要“AND”,而不是“OR”:
SELECT columnName 
FROM TableName 
WHERE columnName NOT LIKE '%stack%' AND columnName NOT LIKE '%overflow%'

您可以根据需要使用更多条件扩展 WHERE 子句。

注:如果您事先知道字符串中单词出现的顺序,也可以执行以下操作:

SELECT columnName 
FROM TableName 
WHERE columnName NOT LIKE '%stack%overflow%'

1
@prestige,请注意第二个语句只会删除同时包含“Stack”和“Overflow”的记录,而不像第一个语句,如果其中一个出现了,“Stack”或“Overflow”,则该记录将被删除。希望这样说得清楚。 - CR7SMS

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接