簡體   English   中英

SQL Server通配符選擇

[英]SQL Server wildcard select with a twist

我正在使用某些關鍵字從字符串類型列中提取一些通配符,但對於列表中的某些關鍵字,我得到了一些誤報,而我在輸出中不希望這樣做。 我的通配符選擇中的一些關鍵字是“ old”,“ older”和“ age”

select * from DESCRIPTIONS..LONG
where (DESCR like '% old %'
or DESCR like '% older %'
or DESCR like '% age %'
or DESCR like '%old%'
or DESCR like '%older%'
or DESCR like '%age%')

我只想提取包含這些絕對詞的行,但最終返回的字符串包括“ management”,“ image”,“ cold”,“ colder”等。

DESCR like '%old%'
or DESCR like '%older%'
or DESCR like '%age%'

但在此過程中,我排除了包含特殊字符(如句點,逗號,斜杠等)的行,這些行是真正的肯定,例如,我會錯過以“ age”結尾的字符串。 或“舊”。 或“較舊”或“年齡”(如果它是字符串中的最后一個單詞,且沒有結尾空格)。

如何排除真假陰性和假陽性,只得到所有真陽性?

這是我的關鍵字的完整列表,以逗號分隔。

關鍵字:新生兒,新生兒,嬰兒,嬰兒,年,年,兒童,兒童,成人,成人,兒科,年齡,年齡,年輕,年輕,年齡,年齡

謝謝

假設用空格分隔單詞,則可以使用以下技巧:

select *
from DESCRIPTIONS..LONG
where ' ' + DESCR + ' ' like '% old %' or
      ' ' + DESCR + ' ' like '% older %' or
      ' ' + DESCR + ' ' like '% age %';

我建議您開始從Microsoft看一下LIKE語法: https : //msdn.microsoft.com/zh-cn/library/ms179859.aspx

您在搜索自由文本字段嗎? 您可以使用[]語法:

SELECT FROM DESCRIPTION..LONG
    WHERE DESCR LIKE '%[ "\/-]age[,.:;'' "\/-]%'

您將放在該位置的所有內容放在方括號內,以解決標點符號問題。

您需要使正則表達式更加復雜:

LIKE '%[^a-z]old[^a-z]%'

這樣做是在單詞“ old”之前或之后直接搜索沒有任何字母的單詞(在正則表達式中^的含義為“ not”)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM