Проверьте, содержит ли строка подстроку в SQL Server 2005, используя хранимую процедуру - PullRequest
224 голосов
/ 24 марта 2010

У меня есть строка, @mainString = 'CATCH ME IF YOU CAN'. Я хочу проверить, находится ли слово ME внутри @mainString.

Как проверить, имеет ли строка определенную подстроку в SQL?

Ответы [ 4 ]

372 голосов
/ 24 марта 2010

CHARINDEX () ищет подстроку в большей строке и возвращает позицию совпадения или 0, если совпадение не найдено

if CHARINDEX('ME',@mainString) > 0
begin
    --do something
end

Редактировать или из ответа Дэниела, если вы хотите найти слово (а не подкомпоненты слов), ваш вызов CHARINDEX будет выглядеть так:

CHARINDEX(' ME ',' ' + REPLACE(REPLACE(@mainString,',',' '),'.',' ') + ' ')

(Добавьте больше рекурсивных вызовов REPLACE () для любой другой пунктуации, которая может произойти

113 голосов
/ 24 марта 2010

Вы можете просто использовать подстановочные знаки в предикате (после IF, WHERE или ON):

@mainstring LIKE '%' + @substring + '%'

или в данном конкретном случае

' ' + @mainstring + ' ' LIKE '% ME[., ]%'

(Вставьте пробелы в строке в кавычках, если вы ищете слово целиком, или пропустите их, если ME может быть частью более крупного слова).

3 голосов
/ 09 мая 2017
DECLARE @str VARCHAR(255)
SET @str = 'this is @n $tring'

IF (@str LIKE '%[^a-zA-Z0-9]%')
    PRINT 'have some ''special'' characters'
ELSE
    PRINT 'have not ''special'' characters'

может это тебе поможет.

0 голосов
/ 24 марта 2010

Вы не говорите, какой вариант SQL (т.е. какая база данных), но в Oracle вы можете использовать instr (), а в SQL Server вы можете использовать SUBSTRING ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...