Answers:
CHARINDEX()在较大的字符串中搜索子字符串,然后返回匹配的位置;如果找不到匹配项,则返回0
if CHARINDEX('ME',@mainString) > 0
begin
--do something
end
编辑或从丹尼尔斯的答案中,如果您想查找一个单词(而不是单词的子部分),则CHARINDEX调用将类似于:
CHARINDEX(' ME ',' ' + REPLACE(REPLACE(@mainString,',',' '),'.',' ') + ' ')
(添加更多递归REPLACE()调用可能发生的任何其他标点符号
REPLACE
称为“递归”,则为“递归” ;“嵌套”是指函数调用的结果立即传递给另一个函数。
select CHARINDEX('ME' collate Latin1_General_CS_AS,'Home')
和select CHARINDEX('ME' collate Latin1_General_CI_AS,'Home')
。(在排序规则中,CS
代表“区分大小写”,我相信您可以解决CI
)。
您只能在谓词中使用通配符(在IF,WHERE或ON之后):
@mainstring LIKE '%' + @substring + '%'
或者在这种情况下
' ' + @mainstring + ' ' LIKE '% ME[., ]%'
(如果要查找整个单词,请在带引号的字符串中放置空格,如果ME可以是较大单词的一部分,则将其排除在外)。
N
您的列是an nvarchar
,别忘了在所有字符串常量之前加上前缀,否则会进行逐行转换)