我有一个字符串,@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()调用)