我正在上一门基础SQL类(class),目前正在学习基础知识,并且在过滤方面遇到了问题:

任务:列出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,否则它太容易了。

最佳答案

您需要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%'

关于sql - 在SQL中将LIKE与多个搜索词一起使用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60309335/

10-15 12:51