Tengo una cadena, @mainString = 'CATCH ME IF YOU CAN'
. Quiero verificar si la palabra ME
está adentro @mainString
.
¿Cómo verifico si una cadena tiene una subcadena específica en SQL?
Tengo una cadena, @mainString = 'CATCH ME IF YOU CAN'
. Quiero verificar si la palabra ME
está adentro @mainString
.
¿Cómo verifico si una cadena tiene una subcadena específica en SQL?
CHARINDEX () busca una subcadena dentro de una cadena más grande y devuelve la posición de la coincidencia, o 0 si no se encuentra ninguna coincidencia
if CHARINDEX('ME',@mainString) > 0
begin
--do something
end
Edite o de daniels answer, si desea encontrar una palabra (y no subcomponentes de palabras), su llamada CHARINDEX se vería así:
CHARINDEX(' ME ',' ' + REPLACE(REPLACE(@mainString,',',' '),'.',' ') + ' ')
(Agregue más REEMPLAZO recursivo () para cualquier otra puntuación que pueda ocurrir
REPLACE
llama a sí mismo; "anidado" es cuando el resultado de una llamada de función se pasa inmediatamente a otra función.select CHARINDEX('ME' collate Latin1_General_CS_AS,'Home')
yselect CHARINDEX('ME' collate Latin1_General_CI_AS,'Home')
. (En intercalaciones,CS
significa mayúsculas y minúsculas y estoy seguro de que puede hacer ejercicioCI
).Puede usar comodines en el predicado (después de IF, WHERE u ON):
o en este caso específico
(Coloque los espacios en la cadena entre comillas si está buscando la palabra completa, o déjelos fuera si ME puede ser parte de una palabra más grande).
fuente
N
si su columna es unanvarchar
, de lo contrario obtendrá conversiones por fila)