Herramientas

Truco SQL: Ignorar acentos en búsquedas SQL

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

¿Te ha parecido de utilidad el contenido?

Daniel Rodríguez

Share
Published by
Daniel Rodríguez

Recent Posts

Curiosidad: “Wi-Fi” no significa “Wireless Fidelity”

Pregunta a cualquiera qué significan las letras de "Wi-Fi" y lo más probable es que…

1 día ago

Shallow copy vs Deep copy en Python: la mutación inesperada

Imagina que tienes una lista con datos de un usuario: usuario_original = { 'nombre': 'Juan',…

3 días ago

Cómo Saber si una Diferencia Significativa es Importante

Has aplicado un t-test y obtienes p = 0,003. El resultado es estadísticamente significativo, hay…

1 semana ago

== vs is en Python: la diferencia que causa bugs misteriosos

Hay un bug que aparece una y otra vez en código Python, tan sutil que…

1 semana ago

Curiosidad: El puerto 80 y los números de puerto

Durante décadas, cuando escribías una dirección web y pulsabas Intro, tu navegador hacía algo que…

2 semanas ago

Cómo Proyectar Cuándo Alcanzarás la Independencia Financiera

La independencia financiera es el punto en el que tus inversiones generan suficientes rendimientos para…

2 semanas ago

This website uses cookies.