Solución 1. Crear una función que intercambie las vocales acentuadas por su homólogas sin acento.
CREATE OR REPLACE FUNCTION sp_ascii(character varying)
RETURN text AS $BODY$
SELECT TRANSLATE
($1,
'áàâãäéèêëíìïóòôõöúùûüÁÀÂÃÄÉÈÊËÍÌÏÓÒÔÕÖÚÙÛÜçÇ',
'aaaaaeeeeiiiooooouuuuAAAAAEEEEIIIOOOOOUUUUcC');
$BODY$
LANGUAGE 'sql';
Solucción 2. Usar la extensión unaccent que viene dentro del paquete postgresql-contrib
- Instalamos el paquete contrib.
# apt install postgresql-contrib
- Como root nos cambiamos al usuario postgres, nos situamos en la base de datos donde queremos instalar la extensión y la instalamos.
# su - postgres
postgres@envy:~$ psql basededatos
psql (9.1.13, servidor 9.1.14)
Digite help
para obtener ayuda.
basededatos=# CREATE EXTENSION unaccent;
La extensión unaccent instalará en la base de datos indicada, un diccionario, una plantilla y cuatro funciones.
Un uso habitual de la función unaccent es el siguiente:
SELECT * FROM articulos
WHERE unaccent(descripción) ILIKE unaccent('%sillon%')
Esta consulta buscará en la tabla articulos
todos los registros donde el campo descripcion
contenga la palabra sillon
, ignorando los acentos. Como además usamos ILIKE, la consulta ignorará también mayúsculas y minúsculas. Al utiizar los comodines %, la consulta buscará la cadena sillon
en cualquier parte del campo.
2025 Alberto Picado