NLV*_*NLV 231 t-sql sql-server string stored-procedures sql-server-2005
我有一根绳子,@mainString = 'CATCH ME IF YOU CAN'
.我想检查这个词是否在ME
里面@mainString
.
如何在SQL中检查字符串是否具有特定的子字符串?
Dam*_*ver 380
CHARINDEX()在较大的字符串中搜索子字符串,并返回匹配的位置,如果未找到匹配则返回0
if CHARINDEX('ME',@mainString) > 0
begin
--do something
end
Run Code Online (Sandbox Code Playgroud)
编辑或来自daniels的答案,如果您想要找到一个单词(而不是单词的子组件),您的CHARINDEX调用将如下所示:
CHARINDEX(' ME ',' ' + REPLACE(REPLACE(@mainString,',',' '),'.',' ') + ' ')
Run Code Online (Sandbox Code Playgroud)
(为可能发生的任何其他标点符号添加更多递归REPLACE()调用
Dan*_*lan 117
您可以在谓词中使用通配符(在IF,WHERE或ON之后):
@mainstring LIKE '%' + @substring + '%'
Run Code Online (Sandbox Code Playgroud)
或在这种特殊情况下
' ' + @mainstring + ' ' LIKE '% ME[., ]%'
Run Code Online (Sandbox Code Playgroud)
(如果你正在寻找整个单词,请将空格放在引用的字符串中,如果ME可以成为更大单词的一部分,则将它们保留在外面).