Eu tenho uma corda @mainString = 'CATCH ME IF YOU CAN'
. Quero verificar se a palavra ME
está dentro @mainString
.
Como verifico se uma string possui uma substring específica no SQL?
Eu tenho uma corda @mainString = 'CATCH ME IF YOU CAN'
. Quero verificar se a palavra ME
está dentro @mainString
.
Como verifico se uma string possui uma substring específica no SQL?
CHARINDEX () procura uma substring dentro de uma string maior e retorna a posição da correspondência ou 0 se nenhuma correspondência for encontrada
if CHARINDEX('ME',@mainString) > 0
begin
--do something
end
Edite ou a partir da resposta de daniels, se você deseja encontrar uma palavra (e não subcomponentes), sua chamada CHARINDEX se parecerá com:
CHARINDEX(' ME ',' ' + REPLACE(REPLACE(@mainString,',',' '),'.',' ') + ' ')
(Adicione mais chamadas REPLACE () recursivas para qualquer outra pontuação que possa ocorrer
REPLACE
chamado; "aninhado" é quando o resultado de uma chamada de função é passado imediatamente para outra função.select CHARINDEX('ME' collate Latin1_General_CS_AS,'Home')
eselect CHARINDEX('ME' collate Latin1_General_CI_AS,'Home')
. (Em agrupamentos,CS
significa Case Sensitive e tenho certeza que você pode se exercitarCI
).Você pode apenas usar curingas no predicado (depois de IF, WHERE ou ON):
ou neste caso específico
(Coloque os espaços na cadeia de caracteres citada se estiver procurando a palavra inteira ou deixe-os de fora se ME puder fazer parte de uma palavra maior).
fonte
N
se sua coluna é umnvarchar
, caso contrário você obter conversões por-linha)