[AYUDA] Queries de caracteres acentuados en Postgres
Mario Benitez
mariobenitez en hotmail.com
Lun Abr 4 16:27:04 CDT 2011
Que tal Gustavo,
Nuestro problema es que usamos realmente muchos constraints en las tablas, y MySQL simplemente se arrana cual vaca en medio de la carretera con estas características.
Por ejemplo, acabo de implementar la función:
CREATE OR REPLACE FUNCTION sp_ascii(character varying)
RETURNS text AS
$BODY$
SELECT TRANSLATE
($1,
'áàâãäéèêëíìïóòôõöúùûüÁÀÂÃÄÉÈÊËÍÌÏÓÒÔÕÖÚÙÛÜçÇ',
'aaaaaeeeeiiiooooouuuuAAAAAEEEEIIIOOOOOUUUUcC');
$BODY$
LANGUAGE 'sql' IMMUTABLE;
La cual sustituye todo caracter acentuado, tanto en la cadena de búsquda como en el campo en el cual se realiza la misma. Posteriormente, creando el índice (que termina en más de 10 minutos porque la tabla tiene casi 12 millones de registros):
CREATE INDEX ksp_ascii_lastname ON clients (lower(sp_ascii(lastname)));
Para aventarle el query:
SELECT * FROM clients WHERE lower(sp_ascii(lastname)) LIKE lower(sp_ascii('pérez'));
Que me responde (en casi dos minutos):
'47168 rows found'
.... Esto no suena a una respuesta profesional aceptable. Pero tengo la esperanza de poder hacer un tuning a Postgres.
Algun tip al respecto?. Saludos.-
> From: gustavo en compunauta.com
> To: ayuda-linux en googlegroups.com
> Subject: Re: [AYUDA] Queries de caracteres acentuados en Postgres
> Date: Mon, 4 Apr 2011 15:50:42 -0500
>
> El Lunes 04 Abril 2011, escribió:
> > Que tal estimadísimos,
> >
> > Mi duda con Postgres 8.4, es cómo diablos puedo ejecutar un select, donde
> > un campo (p.e: nombre) conincida con 'maría' y me arroje los resultados:
> >
> > MARIA
> > MARÍA
> > maria
> > maría
> tal vez con SIMILAR TO.
> > Alguien ya resolvió esto en postgres?
> Te recomiendo que si tu proyecto es nuevo lo analices, alomejor no te conviene
> utilizar postgresql sino MySQL, no estoy a favor de uno o del otro, sino que
> mysql en tu caso encuentra con 'maria' todos tus casos como los listaste.
>
> Saludos.
> > Saludos y gracias de antemano.
>
>
> --
> Gustavo Guillermo Perez
> http://www.compunauta.com
> http://www.compunauta.net
> http://anuncios.compunauta.net
>
> --
> Has recibido este mensaje porque estás suscrito a Grupo "ayuda-linux"
> de Grupos de Google.
> Si quieres publicar en este grupo, envía un mensaje de correo
> electrónico a ayuda-linux en googlegroups.com
> Para anular la suscripción a este grupo, envía un mensaje a
> ayuda-linux-unsubscribe en googlegroups.com
> Para obtener más opciones, visita este grupo en
> http://groups.google.es/group/ayuda-linux?hl=es. o http://www.compunauta.com/ayuda/
--
Has recibido este mensaje porque estás suscrito a Grupo "ayuda-linux"
de Grupos de Google.
Si quieres publicar en este grupo, envía un mensaje de correo
electrónico a ayuda-linux en googlegroups.com
Para anular la suscripción a este grupo, envía un mensaje a
ayuda-linux-unsubscribe en googlegroups.com
Para obtener más opciones, visita este grupo en
http://groups.google.es/group/ayuda-linux?hl=es. o http://www.compunauta.com/ayuda/
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <https://lists.srvr.mx/pipermail/ayuda/attachments/20110404/9ff82a4e/attachment-0001.html>
Más información sobre la lista de distribución Ayuda