Re: Es postgres 9.0 insensible al case de mayusculas, acentos, etc?

From: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
To: Leonardo Castillo <leonardo(dot)castillo(at)alejandria(dot)biz>
Cc: pgsql-es-ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Es postgres 9.0 insensible al case de mayusculas, acentos, etc?
Date: 2011-02-09 22:01:52
Message-ID: 1297288564-sup-6593@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Excerpts from Leonardo Castillo's message of mié feb 09 17:46:10 -0300 2011:
> Buenas tardes compañeros.
>
> Tengo una duda, hasta postgres 8.3 que es el que he trabajado, cuando uno
> busca 'jose' en un campo y el valor que está es 'Jose' o 'JOSE' o 'José', el
> manejador no lo recupera, MySQL, SQL Server y Sybase Anywhere si lo hacen,
> la pregunta es Postgres 9.0 ya lo hace?. Perdonen mi ignorancia, busque en
> google y lo recuperado no es lo deseado.

Pero vamos a ver. Tu pregunta es como si dijeras “tengo un martillo
pero sólo funciona para clavos de 4", ahora me pasaron unos clavos de 5"
y no los clava, ¿puedo actualizarlo y hacer que funcione también para
esos clavos?”. En otras palabras, claro que lo hace, sólo que quizás no
lo estás usando de la manera correcta. ¿Probaste alejando el martillo
un poco más para que el clavo alcance a entrar en el espacio que queda
encima de la madera?

Decir que Postgres no sabe hacer búsquedas insensibles a mayúsculas sólo
puede ser ignorancia o desinformación, porque claramente sí puede
hacerlo; no sólo en 9.0 sino también en 8.3 y en 7.2 y todas las
versiones que conozco. Si no has podido hacer que funcione para ti, no
estás haciendo lo correcto. Las búsquedas ignorando acentos son un poco
más complicadas pero también se puede hacer en todas las versiones
soportadas (8.2 en adelante).

Ahora, para hacer una búsqueda insensible a mayúsculas, NO PUEDES hacer
esto:
select * from ... WHERE campo_de_texto = 'jose'

porque eso sólo retornará campos idénticos a 'jose', que NO ES 'José' ni
ninguna de las otras variaciones. Lo que tienes que hacer, como ya
mencionaron, es usar el operador ILIKE, o quizás el tipo de dato citext.

En resumen, estás planteando mal la pregunta: lo que tú realmente
quieres preguntar es CÓMO se hace. Porque de poderse, desde hace mucho
que se puede.

--
Álvaro Herrera -- Se vende casa en Ñuñoa: www.portalinmobiliario.com/993147

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Román Mussi 2011-02-09 22:20:54 Re: Es postgres 9.0 insensible al case de mayusculas, acentos, etc?
Previous Message Jaime Casanova 2011-02-09 21:48:15 Re: Es postgres 9.0 insensible al case de mayusculas, acentos, etc?