在 SQL 中使用 LIKE 和多个搜索词
Using LIKE in SQL with multiple search terms
我正在学习基础 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 否则它太容易了。
你想要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 课程,目前正在学习基础知识,但遇到过滤问题:
任务:列出 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%'