У меня есть строка @mainString = 'CATCH ME IF YOU CAN'
. Я хочу проверить, есть ли слово ME
внутри @mainString
.
Как проверить, имеет ли строка определенную подстроку в SQL?
У меня есть строка @mainString = 'CATCH ME IF YOU CAN'
. Я хочу проверить, есть ли слово ME
внутри @mainString
.
Как проверить, имеет ли строка определенную подстроку в SQL?
CHARINDEX () ищет подстроку в большей строке и возвращает позицию совпадения, или 0, если совпадение не найдено
if CHARINDEX('ME',@mainString) > 0
begin
--do something
end
Отредактируйте или ответ от daniels, если вы хотите найти слово (а не подкомпоненты слов), ваш вызов CHARINDEX будет выглядеть так:
CHARINDEX(' ME ',' ' + REPLACE(REPLACE(@mainString,',',' '),'.',' ') + ' ')
(Добавьте более рекурсивные вызовы REPLACE () для любой другой пунктуации, которая может произойти
REPLACE
вызван сам; «вложенный» - это когда результат вызова функции сразу передается другой функции.select CHARINDEX('ME' collate Latin1_General_CS_AS,'Home')
иselect CHARINDEX('ME' collate Latin1_General_CI_AS,'Home')
. (В сопоставленияхCS
обозначает Case Sensitive, и я уверен, что вы можете работатьCI
).Вы можете просто использовать подстановочные знаки в предикате (после IF, WHERE или ON):
или в этом конкретном случае
(Вставьте пробелы в строке в кавычках, если вы ищете слово целиком, или пропустите их, если ME может быть частью большего слова).
источник
N
если ваш столбец равенnvarchar
, иначе вы получите преобразования для каждой строки)