Ignorar acentos en una busqueda de SQL Server
SQL Server
- Por Programador ASP clásico /
- 15/08/2012 @ 12:38:34 /
- 1928 visitas
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 buscas el apellido “Perez”, también se desea que les aparezcan los resultados con los apellidos “Pérez”.
Para lograr que no se distingan acentos en una búsqueda en una base de datos de SQL Server es necesario cambiar la intercalación (“Collation” en inglés) del campo en el que quieres buscar o bien de la base de datos completa, para que utilice alguna de las intercalaciones que ignoran los acentos, que son aquellas acabadas en “_IA” (Insensitive Accent).
La sentencia para cambiar una base de datos completa para utilizar la intercalación “Modern_Spanish_CI_AI”:
ALTER DATABASE [nombrebasededatos] COLLATE Modern_Spanish_CI_AI
Si lo que queremos es sólo cambiar un campo de una tabla, el administrador de SQL Server ayudará con el cambiol. Sólo tienes que editar las propiedades de la columna, y quitar la opción de “Distinguir acentos” en el formulario que aparece al intentar modificar la propiedad “Intercalación”.
Es muy común que una búsqueda no distinga las palabras que se diferencian sólo por acentos. 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", "Santiago", etc.
tags: sql busca texto, buscar palabras con tilde, buscar campos en sql, base datos sql, ms sql, mssql, palabras sin tildes, palabras sin acentos, texto sql, buscar en sql server, mayusculas sql, estas con acento, estas acento
En esta sección encontrarás una mezcla de códigos recopilados de fuentes públicas de Internet y otros creados por ASP TEAM. Compartimos recursos útiles de buena fe para formar una base de conocimiento en el desarrollo de aplicaciones en ASP Clásico.