Comparar cadenas en SQL sin distinguir el acento
Cuando necesitamos buscar registros en una base de datos de SQL Server un texto que el usuario ingresó en nuestra aplicación suele ser muy útil no considerar los acentos en dicha búsqueda, especialmente si hablamos de nombres o apellidos de personas.
Por ejemplo si tenemos la siguiente consulta y utilizamos "San" como valor de entrada:SELECT Nombre, ApellidoPaterno, ApellidoMaterno
FROM Empleados
WHERE ApellidoPaterno LIKE '%' + @Valor +'%'
Esto NO nos devolvería los empleados con apellidos cómo "Sánchez". Para arreglar esta situacion simplemente indicamos que la comparación (LIKE
) debería hacerse utilizado una intercalación especifica, una que no sea sensible a los acentos. Entonces:SELECT Nombre, ApellidoPaterno, ApellidoMaterno
FROM Empleados
WHERE ApellidoPaterno LIKE '%' + @Valor +'%' COLLATE SQL_LATIN1_GENERAL_CP1_CI_AI
Con esto solucionamos el problema y con el valor establecido a "San" obtendríamos entre los resultados a "Sánchez", "Sandoval", etc.
3 comentarios:
gracias, me ha sido muy util!
Muchas gracias por compartir esto, no pensaba que fuese tan sencillo
Gracias, hecho así parece maga ;)
Publicar un comentario