繁体   English   中英

如何从匹配项中排除特定单词?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM