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)
?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;
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.