Categories
PostgreSQL

Tip: Eliminar tildes desde PostgreSQL

Una forma sencilla para eliminar las tildes de un texto en PostgreSQL, es utilizar la función to_ascii

code:

buayacorp=> select lower(to_ascii('PERÚ')) = 'peru';
 ?column?
----------
 t
(1 fila)

Esta función, como se puede apreciar en el manual de PostgreSQL, sólo soporta las siguientes codificaciones: LATIN1, LATIN2, LATIN9 y WIN1250.

Siguiendo la tradición, a continuación una función básica que elimina las tildes de las urls.

sql:

CREATE OR REPLACE FUNCTION sanitize_url(VARCHAR)
RETURNS VARCHAR AS $$
        SELECT trim('-' FROM regexp_replace(lower(to_ascii($1)), '[ -]+', '-', 'g'));
$$ LANGUAGE sql;

El código mostrado, primero elimina las tildes del texto que se pase como parámetro, lo convierte a minúsculas y en seguida reemplaza cualquier ocurrencia de -uno o más- espacios o guiones por otro guión, finalmente elimina cualquier guión que haya quedado al inicio y final del texto.