Проверьте, содержит ли строка подстроку в SQL Server 2005, используя хранимую процедуру
У меня строка, @mainString = 'CATCH ME IF YOU CAN'
. Я хочу проверить, находится ли слово ME
внутри @mainString
.
Как проверить, имеет ли строка определенную подстроку в SQL?
Ответы
Ответ 1
CHARINDEX() ищет подстроку в большей строке и возвращает позицию совпадения или 0, если совпадение не найдено
if CHARINDEX('ME',@mainString) > 0
begin
--do something
end
Отредактируйте или ответьте даниэлям, если вы хотите найти слово (а не подкомпоненты слов), ваш вызов CHARINDEX будет выглядеть так:
CHARINDEX(' ME ',' ' + REPLACE(REPLACE(@mainString,',',' '),'.',' ') + ' ')
(Добавить более рекурсивный вызов REPLACE() для любой другой пунктуации, которая может произойти
Ответ 2
Вы можете просто использовать подстановочные знаки в предикате (после IF, WHERE или ON):
@mainstring LIKE '%' + @substring + '%'
или в этом конкретном случае
' ' + @mainstring + ' ' LIKE '% ME[., ]%'
(Поместите пробелы в строку с кавычками, если вы ищете целое слово, или оставьте их, если ME может быть частью большего слова).
Ответ 3
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'
может это вам поможет.
Ответ 4
Вы не говорите, какой вкус SQL (т.е. какая база данных), но в Oracle вы можете использовать instr(), а в SQL Server вы можете использовать SUBSTRING()