Re: [pgsql-es-ayuda] Búsqueda de palabras con Acentos

From: José Manuel Ruiz <josemanuelruizbaena(at)gmail(dot)com>
To: Román Mussi <romanmussi(at)nitrico(dot)com(dot)ar>
Subject: Re: [pgsql-es-ayuda] Búsqueda de palabras con Acentos
Date: 2010-09-22 06:37:36
Message-ID: AANLkTiko6L0P0hAAUoBPYGbhSaDPx=rYVrXQxDmuDU0x@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Muchas gracias, añadiré tu blog para seguir aprendiendo.

La función:

*CREATE OR REPLACE FUNCTION sp_ascii(character varying)**
**RETURNS text AS**
**$BODY$**
**SELECT TRANSLATE
($1,
'áàâãäéèêëíìïóòôõöúùûüÁÀÂÃÄÉÈÊËÍÌÏÓÒÔÕÖÚÙÛÜçÇ',**
**'aaaaaeeeeiiiooooouuuuAAAAAEEEEIIIOOOOOUUUUcC');**
**$BODY$**
**LANGUAGE 'sql';*

Hace justo lo que pretendía.

SELECT * FROM nombres WHERE sp_ascii(apellido1) ILIKE sp_ascii('martin');

Ahora me devuelve, los Martin, martin, Mártin, Martín, MARTÍN...

Pero aún así esto hará que modifique la aplicación para que las peticiones
de datos sean correctas. ¿Se os ocurre alguna forma de mejorar esto?

Yo estoy pensando en hacer vistas sobre las tablas haciendo la conversión a
SIN ACENTOS de todas las columnas, pero aún así tendría que modificar mi
aplicación para que busque en v_nombres en lugar de en la tabla nombres.

Alguna idea mejor para no tener que modificar la aplicación.

Gracias por la ayuda.

El 21 de septiembre de 2010 21:38, Román Mussi
<romanmussi(at)nitrico(dot)com(dot)ar>escribió:

> Hola,
> Escribí algo en mi blog que por ahí te resulta útil. Te paso el link,
>
> http://romanmussi.blogspot.com/2009/12/busquedas-por-campos-de-texto-en.html
> Saludos
> Román
>
> ----- Original Message -----
> *From:* José Manuel Ruiz <josemanuelruizbaena(at)gmail(dot)com>
> *To:* pgsql-es-ayuda(at)postgresql(dot)org
> *Sent:* Tuesday, September 21, 2010 12:59 PM
> *Subject:* [pgsql-es-ayuda] Búsqueda de palabras con Acentos
>
> Buenas.
>
> Tengo un problema con una base de datos PostgreSQL con codificación UNICODE
> que da soporte a una aplicación en PHP.
>
> Todo funcionaba correctamente hasta que me pidieron que una búsqueda de por
> ejemplo "Martin" debería devolver los registros "Martin" y también los
> "Martín".
>
> ¿Cómo puedo solucionar esto? Ya utilizo ilike en lugar de like para que no
> distinta entre "Martin" y "martin".
>
> No me preocupaba hasta que me dí cuenta de que MySQL con codificación
> utf8_general lo hace sin problemas. ¿Hay alguna solución para esto?
>
> --
> "Comparte lo que sabes, aprende lo que no sepas"
> Todo por el conocimiento libre
>
> Linux user number 441469
>
> Me gustaría cambiar el mundo, pero no tengo el código fuente !
>
> Me limito a dejar mi granito de arena en
> http://blog.josemanuelruizbaena.com
>
>

--
"Comparte lo que sabes, aprende lo que no sepas"
Todo por el conocimiento libre

Linux user number 441469

Me gustaría cambiar el mundo, pero no tengo el código fuente !

Me limito a dejar mi granito de arena en http://blog.josemanuelruizbaena.com

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Jaime Casanova 2010-09-22 09:16:09 PostgreSQL 9.0 fue liberado
Previous Message Mariano Reingart 2010-09-22 05:16:35 Re: Documentos PDF