Проверьте, содержит ли строка подстроку в SQL Server 2005, с помощью хранимой процедуры

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

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

230
задан gotqn 18 May 2017 в 03:46
поделиться

3 ответа

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

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

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

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

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

379
ответ дан 23 November 2019 в 03:41
поделиться

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

-10
ответ дан 28 July 2019 в 18:56
поделиться

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

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

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

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

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

117
ответ дан 23 November 2019 в 03:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: