Publicado el Deja un comentario

Quitar acentos mediante una consulta SQL en Oracle

Supongamos que queremos crear «slugs» para nuestras URLs con los nombres de productos que contienen acentos. Pero ¿que es un slug? Bueno, un slug es colocar el titulo de una página en una URL válida para que de el usuario con sólo verla se de una idea de el contenido que puede encontrar en esa página.

Supongamos que la página anuncia nuestro producto «Computadora Portátil Lenovo X72»; el slug para está página sería «computadora-portatil-lenovo-x72». Por lo general los «slugs» no llevan acentos, por lo tanto necesitamos reemplazarlos por su vocal base (á por a en el ejemplo anterior) y los espacios por los guiones.

Para específicamente el ejemplo anterior, utilizaríamos una combinación de las funciones TRANSLATE para reemplazar los espacios y acentos y la función LOWER para convertir el texto a minúsculas así:  

select Lower(Translate(‘Computadora Portátil Lenovo X72’,’á ‘,’a-‘)) from SYS.Dual;

Daría como resultado:

computadora-portatil-lenovo-x72

La función TRANSLATE trabaja parecido a la función REPLACE con la diferencia que la primera, permite reemplazar distintos caracteres a la vez como se puede observar en el ejemplo anterior (los caracteres ‘á’ fueron reemplazados por ‘a’  y los espacios por guiones ‘-‘).

Si lo que queremos es hacer una consulta más general para reemplazar los acentos en cualquier cadena de caracteres, emplearíamos una consulta SQL como esta:

select Translate(‘José Ángel Méndez Zúñiga’,’ÁáÉéÍíÓóÚú’,’AaEeIiOoUu’) from Dual;

Lo que daría como resultado:

Jose Angel Mendez Zuñiga

Espero y les sea útil.

¡Hasta la próxima!

 

 

Todo comentario es bienvenido