[英]How do I exclude particular words from a match?
假设我有以下 SQL 查询:
SELECT
id, text
FROM
comments
WHERE
lower(text) LIKE '%hell%'
ORDER BY len(text) ASC
这匹配包含hell
任何文本。 但是,我想从匹配中排除一个特定的词:“贝壳”。 我如何编写一个 SQL 查询来匹配包含hell
所有内容,但忽略seashells
?
例子:
您可以尝试保留当前的逻辑,但在首先从文本中删除seashells
后检查%hell%
:
SELECT id, text
FROM comments
WHERE LOWER(REPLACE(text, 'seashell', '')) LIKE '%hell%'
ORDER BY LEN(text);
请注意,正则表达式搜索将是处理您的需求的更好方法,但 SQL Server 没有太多内置的正则表达式支持。
您可以在 Sql Query 中尝试Not Like
。 这是您可以尝试的方法。
SELECT
id, text
FROM
comments
WHERE
lower(text) LIKE '%hell%'
ORDER BY len(text) ASC
EXCEPT
SELECT
id, text
FROM
comments
WHERE
lower(text) LIKE '%seashells%'
OR
lower(text) LIKE '%other_word%'
ORDER BY len(text) ASC
排除某些包含地狱的特定关键字。 注意:NOT / LIKE 区分大小写。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.