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:

Anónimo dijo...

gracias, me ha sido muy util!

Anónimo dijo...

Muchas gracias por compartir esto, no pensaba que fuese tan sencillo

Wostin dijo...

Gracias, hecho así parece maga ;)