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: De dónde vienen foo, bar y foobar

Si revisáis código o documentación de otros programadores, tarde o temprano os toparéis con dos…

2 días ago

BG/NBD + Gamma/Gamma: el modelo probabilístico para CLV en compras continuas

Los dos artículos anteriores cubrieron el CLV clásico —una fórmula útil pero que trata a…

4 días ago

Errores habituales al trabajar con DataFrames grandes en Pandas (y cómo evitarlos)

Hay un momento muy concreto en la vida de casi todo análisis: el código que…

1 semana ago

Champion vs Challenger: Cómo los Bancos Validan Modelos Nuevos antes de Ponerlos en Producción

Has construido un nuevo modelo de credit scoring. Las métricas de validación son mejores que…

2 semanas ago

Cómo Comparar Dos Hipotecas con Todos los Gastos Incluidos

Comparar dos hipotecas parece sencillo: la que tenga el TIN más bajo es la mejor…

2 semanas ago

Segmentación RFM: cómo clasificar tu cartera de clientes antes de calcular el CLV

En un artículo anterior vimos la fórmula clásica del CLV junto a sus limitaciones. Una…

3 semanas ago

This website uses cookies.