En los campos de texto de las bases de datos es habitual que existan acentos u otros caracteres especiales. Aunque la mayoría de los sistemas actuales admiten estos caracteres sin problemas, no extraño encontrar la misma palabra con y sin acento en diferentes registros. Por lo que saber cómo ignorar acentos en búsquedas SQL nos puede facilitar el trabajo en muchas ocasiones.
Intercalación
El truco para ignorar los acentos en las búsquedas está en cambiar la intercalación de las cadenas de texto una codificación que sea insensible al uso de acentos, como puede ser el caso de Latin1_general_CI_AI
. Al hacer esto, como ya se explicó en el caso de Python, a la hora de comparar dos cadenas de texto los acentos y otros caracteres especiales se ignorarán. Por lo que al buscar por ejemplo "este", también serán válidas cadenas de texto como "éste".
Buscar cadenas exactas
Así que, si queremos buscar todos los apellidos "Diez" en una base de datos, independientemente de que tengan o no el acento, se puede hacer con la siguiente línea en SQL Server:
SELECT last_name FROM clients WHERE last_name = 'Diez' COLLATE Latin1_general_CI_AI;
Buscar cadenas que contienen
El truco también sirve para el caso de querer buscar una subcadena. Lo que se puede hacer con LIKE
. Así que si queremos buscar un apellido ignorando el acento en un campo con el nombre completo solo tenemos que hacer:
SELECT full_name FROM clients WHERE last_name LIKE '%Diez%' COLLATE Latin1_general_CI_AI;
Escribiendo antes y después de la texto a buscar el comodín %
para indicar que busque la subcadena.
Conclusiones
En esta ocasión hemos visto un truco rápido para mejorar las búsquedas en bases de datos. Al poder comparar las cadenas de texto ignorando acentos en búsquedas SQL. Un problema más habitual de lo que desearíamos.
Un truco que he probado únicamente en Microsoft SQL Server, aunque posiblemente sea fácil en otros motores de base de datos. Si alguien lo ha probado en otros motores satisfactoriamente, lo pude indicar en los comentarios ayudar a otros lectores.
Imagen de Theodor Moise en Pixabay