Skip site navigation (1) Skip section navigation (2)

Re: Problemas con acentos

From: Calabaza <calalinux(at)gmail(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Problemas con acentos
Date: 2009-02-26 10:57:28
Message-ID: 958993320902260257j7b60577bub352d9827dd62fa4@mail.gmail.com (view raw or flat)
Thread:
Lists: pgsql-es-ayuda
2009/2/26 Gabriel Ferro <gabrielrferro(at)yahoo(dot)com(dot)ar>:
>
>
>
>
>
> ----- Mensaje original ----
>> De: Calabaza <calalinux(at)gmail(dot)com>
>> Para: pgsql-es-ayuda(at)postgresql(dot)org
>> Enviado: jueves 26 de febrero de 2009, 7:43:03
>> Asunto: Re: [pgsql-es-ayuda] Problemas con acentos
>>
>> 2009/2/26 Rafa Comino :
>> > Hola a todos, tengo un problema con mi base de datos postgresql que no se
>> > como resolver
>> > querría consultar en la base de datos pero que no fuera sensible a
>> > mayúsculas y acentos
>> > La única forma que se como hacerlo es un ínidce fullext con un tsvector.
>> > Hay alguna manera en que los LIKE no distinguieran entre palabras con
>> > acentos y sin acentos, vaya que el resultado de  "campo LIKE '%iglú%'" fuera
>> > el mismo que el de "campo LIKE '%iglu%'"
>> > Saludos y gracias
>> >
>> > --
>> > Rafael Comino Mateos
>> > www.toreria.es
>> > www.trevenque.es
>> >
>>
>> SELECT
>> upper(trim(translate('iglü','áéíóúÁÉÍÓÚäëïöüÄËÏÖÜàèìòù','aeiouAEIOUaeiouAEIOUaeiou')))
>> as tu_campo
>>
>> Este select lo use para migrar datos puede servirte, pero no se como
>> ha de impactar en el rendimiento.
>>
>> Tu select quedaría algo así:
>>
>> SELECT
>> upper(trim(translate('tu_campo','áéíóúÁÉÍÓÚäëïöüÄËÏÖÜàèìòù','aeiouAEIOUaeiouAEIOUaeiou')))
>> as tu_campo
>> from tu_tabla
>> where
>> upper(trim(translate('tu_campo','áéíóúÁÉÍÓÚäëïöüÄËÏÖÜàèìòù','aeiouAEIOUaeiouAEIOUaeiou')))
>> like '%iglú%'
>>
>> Un abrazo
>> --
>> §~^Calabaza^~§ from Villa Elisa, Paraguay
>> --
>
>
> por poquito que se, interpreto un error en el like
> no deberia buscar con acentos, es decir tambien deberia hacer
> un upper trim translate de "iglú" ya que sino nunca encontraria nada.
> aunque recomendaria evaluar sino conviene hacer un update
> de los campos sacando los acentos ya que creo que el rendimiento
> puede caer bastante

Tienes toda la razón, jejeje, valga la aclaración:

SELECT
 upper(trim(translate('tu_campo','áéíóúÁÉÍÓÚäëïöüÄËÏÖÜàèìòù','aeiouAEIOUaeiouAEIOUaeiou')))
as tu_campo
from tu_tabla
where
 upper(trim(translate('tu_campo','áéíóúÁÉÍÓÚäëïöüÄËÏÖÜàèìòù','aeiouAEIOUaeiouAEIOUaeiou')))
like upper(trim(translate('%iglú%','áéíóúÁÉÍÓÚäëïöüÄËÏÖÜàèìòù','aeiouAEIOUaeiouAEIOUaeiou')))

Voto al update de los datos con el translate... :)

Otro abrazo.
-- 
§~^Calabaza^~§ from Villa Elisa, Paraguay

In response to

pgsql-es-ayuda by date

Next:From: =?iso-8859-1?Q?Jos=E9_Ferm=EDn_Francisco_Ferreras?=Date: 2009-02-26 12:19:07
Subject: RE: Problemas con acentos
Previous:From: Gabriel FerroDate: 2009-02-26 10:51:57
Subject: Re: Problemas con acentos

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group