我有一个字符串,@mainString = '抓我如果你可以'。我想检查单词ME是否在@mainString中。
我如何检查一个字符串是否在SQL中有特定的子字符串?
我有一个字符串,@mainString = '抓我如果你可以'。我想检查单词ME是否在@mainString中。
我如何检查一个字符串是否在SQL中有特定的子字符串?
当前回答
你可以在谓词中使用通配符(在IF, WHERE或ON之后):
@mainstring LIKE '%' + @substring + '%'
或者在这个特定的例子中
' ' + @mainstring + ' ' LIKE '% ME[., ]%'
(如果要查找整个单词,请在带引号的字符串中添加空格,如果ME可以是更大单词的一部分,则省略空格)。
其他回答
你可以在谓词中使用通配符(在IF, WHERE或ON之后):
@mainstring LIKE '%' + @substring + '%'
或者在这个特定的例子中
' ' + @mainstring + ' ' LIKE '% ME[., ]%'
(如果要查找整个单词,请在带引号的字符串中添加空格,如果ME可以是更大单词的一部分,则省略空格)。
CHARINDEX()在更大的字符串中搜索子字符串,并返回匹配的位置,如果没有找到匹配则返回0
if CHARINDEX('ME',@mainString) > 0
begin
--do something
end
编辑或从丹尼尔斯的回答,如果你想找到一个词(而不是词的子组件),你的CHARINDEX调用看起来像:
CHARINDEX(' ME ',' ' + REPLACE(REPLACE(@mainString,',',' '),'.',' ') + ' ')
(为可能出现的任何其他标点符号添加更多的递归REPLACE()调用)