簡體   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