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