如何判断VARCHAR变量是否包含子字符串?

时间:2012-09-04 14:16:14

标签: sql string contains sql-server-2012

我以为是CONTAINS,但这不适合我。

我希望这样做:

IF CONTAINS(@stringVar, 'thisstring')
   ...

我必须运行一个select或另一个,具体取决于该变量是否包含字符串,我无法弄清楚如何让它工作。我看到的所有示例都使用了包含的列。

提前致谢。

4 个答案:

答案 0 :(得分:74)

标准的SQL方法是使用:

where @stringVar like '%thisstring%'

这是在查询语句中。您也可以在TSQL中执行此操作:

if @stringVar like '%thisstring%'

答案 1 :(得分:27)

您可以选择使用LIKE代替CHARINDEX(与其他评论者建议的一样有效):

declare @full varchar(100) = 'abcdefg'
declare @find varchar(100) = 'cde'
if (charindex(@find, @full) > 0)
    print 'exists'

答案 2 :(得分:7)

CONTAINS用于全文索引字段 - 如果没有,则使用LIKE

答案 3 :(得分:7)

    IF CHARINDEX('TextToSearch',@TextWhereISearch, 0) > 0 => TEXT EXISTS

    IF PATINDEX('TextToSearch', @TextWhereISearch) > 0 => TEXT EXISTS

    Additionally we can also use LIKE but I usually don't use LIKE.