SQL 服务器通配符 select
SQL Server wildcard select with a twist
我正在使用某些关键字从字符串类型列中提取一些通配符,但对于我列表中的某些关键字,我得到了一些我不希望在输出中出现的误报。我的通配符 select 中的一些关键字是 '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.' 或 'old.' 或 'older,' 或 'age' 结尾的字符串,当它是字符串中没有尾随 space.[=14 的最后一个单词时=]
如何排除真阴性和假阳性,只得到所有真阳性?
这是我的关键字的完整列表,用逗号分隔。
关键词:新生儿、新生儿、婴儿、婴儿、年、岁、儿童、儿童、成人、成人、儿科、老年、年长、年轻、年轻、年龄
谢谢
假设空格划定单词,你可以使用这个技巧:
select *
from DESCRIPTIONS..LONG
where ' ' + DESCR + ' ' like '% old %' or
' ' + DESCR + ' ' like '% older %' or
' ' + DESCR + ' ' like '% age %';
我建议您开始查看 Microsoft 的 LIKE 语法:
https://msdn.microsoft.com/en-us/library/ms179859.aspx
您正在搜索自由文本字段吗?您可以使用 [] 语法:
SELECT FROM DESCRIPTION..LONG
WHERE DESCR LIKE '%[ "\/-]age[,.:;'' "\/-]%'
你把你接受的所有东西都放在方括号里,用标点符号解决你的问题。
你需要让你的正则表达式更复杂:
LIKE '%[^a-z]old[^a-z]%'
这样做的目的是搜索单词 "old" 之前或之后没有任何字母(^ 在正则表达式中具有 "not" 的含义)。
我正在使用某些关键字从字符串类型列中提取一些通配符,但对于我列表中的某些关键字,我得到了一些我不希望在输出中出现的误报。我的通配符 select 中的一些关键字是 '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.' 或 'old.' 或 'older,' 或 'age' 结尾的字符串,当它是字符串中没有尾随 space.[=14 的最后一个单词时=]
如何排除真阴性和假阳性,只得到所有真阳性?
这是我的关键字的完整列表,用逗号分隔。
关键词:新生儿、新生儿、婴儿、婴儿、年、岁、儿童、儿童、成人、成人、儿科、老年、年长、年轻、年轻、年龄
谢谢
假设空格划定单词,你可以使用这个技巧:
select *
from DESCRIPTIONS..LONG
where ' ' + DESCR + ' ' like '% old %' or
' ' + DESCR + ' ' like '% older %' or
' ' + DESCR + ' ' like '% age %';
我建议您开始查看 Microsoft 的 LIKE 语法: https://msdn.microsoft.com/en-us/library/ms179859.aspx
您正在搜索自由文本字段吗?您可以使用 [] 语法:
SELECT FROM DESCRIPTION..LONG
WHERE DESCR LIKE '%[ "\/-]age[,.:;'' "\/-]%'
你把你接受的所有东西都放在方括号里,用标点符号解决你的问题。
你需要让你的正则表达式更复杂:
LIKE '%[^a-z]old[^a-z]%'
这样做的目的是搜索单词 "old" 之前或之后没有任何字母(^ 在正则表达式中具有 "not" 的含义)。