Как я могу сказать, если переменная VARCHAR содержит подстроку?


Я думал, что это был CONTAINS, но это не работает для меня.

Я ищу, чтобы сделать это:

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

Я должен запустить один select или другой, в зависимости от того, содержит ли эта переменная строку, и я не могу понять, как заставить ее работать. Все примеры, которые я вижу, используют столбцы в contains.

спасибо заранее.

4 53

4 ответа:

стандартный способ SQL-это использовать как:

where @stringVar like '%thisstring%'

это в операторе запроса. Вы также можете сделать это в TSQL:

if @stringVar like '%thisstring%'

вместо LIKE (который работает, как предложили другие комментаторы), вы можете также использовать CHARINDEX:

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

CONTAINS для полнотекстового индексированного поля - если нет, то используйте LIKE

    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.