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

Yat*_*rix 58 sql string contains sql-server-2012

我以为是CONTAINS,但那不适合我.

我希望这样做:

IF CONTAINS(@stringVar, 'thisstring')
   ...
Run Code Online (Sandbox Code Playgroud)

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

提前致谢.

Gor*_*off 76

标准的SQL方法是使用如下:

where @stringVar like '%thisstring%'
Run Code Online (Sandbox Code Playgroud)

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

if @stringVar like '%thisstring%'
Run Code Online (Sandbox Code Playgroud)

  • @Yatrix...你也可以使用charindex('thisstring',@ stringVar),如果它似乎不起作用. (3认同)

CD *_*sen 28

LIKE您可以选择使用CHARINDEX:而不是(其他评论者的建议)

declare @full varchar(100) = 'abcdefg'
declare @find varchar(100) = 'cde'
if (charindex(@find, @full) > 0)
    print 'exists'
Run Code Online (Sandbox Code Playgroud)


pod*_*ska 7

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


San*_*ngh 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.
Run Code Online (Sandbox Code Playgroud)