Tengo una cadena, @mainString = 'CATCH ME IF YOU CAN'. Quiero verificar si la palabra MEestá 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 MEestá 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
REPLACEllama 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,CSsignifica 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
Nsi su columna es unanvarchar, de lo contrario obtendrá conversiones por fila)