在SQL Server 2005中,使用存储过程检查字符串是否包含子字符串

我有一个字符串@mainString = 'CATCH ME IF YOU CAN'。我想检查单词ME是否在@mainString中。

我如何检查一个字符串是否在SQL中有特定的子字符串?

715070 次浏览

你可以在谓词中使用通配符(在IF, WHERE或ON之后):

@mainstring LIKE '%' + @substring + '%'

或者在这个特定的例子中

' ' + @mainstring + ' ' LIKE '% ME[., ]%'

(如果要查找整个单词,请在带引号的字符串中添加空格,如果ME可以是更大单词的一部分,则省略空格)。

CHARINDEX()在更大的字符串中搜索子字符串,并返回匹配的位置,如果没有找到匹配则返回0

if CHARINDEX('ME',@mainString) > 0
begin
--do something
end

编辑或from daniels answer,如果你想找到一个单词(而不是单词的子组件),你的CHARINDEX调用看起来像:

CHARINDEX(' ME ',' ' + REPLACE(REPLACE(@mainString,',',' '),'.',' ') + ' ')

(为可能出现的任何其他标点符号添加更多的递归REPLACE()调用)