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

Re: Problema ILIKE con letra eñe

From: "Paolo Lopez" <murphyperu(at)gmail(dot)com>
To: "Jaime Casanova" <systemguards(at)gmail(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Problema ILIKE con letra eñe
Date: 2006-04-25 07:00:06
Message-ID: ab97ec200604250000k6d7ffa09wda30265d2709ed2c@mail.gmail.com (view raw or flat)
Thread:
Lists: pgsql-es-ayuda
He estado haciendo algunas pruebas para ver si es que el problema del
ILIKE , UPPER y LOWER tienen que ver con el LOCALE y no con el
server_encoding y client_encoding.

Durante la instalacion de la version 8.1.3 para windows al momento de
pedirme los datos en initdb antes seleccionaba  LOCALE = C , ahora lo
he cambiado por LOCALE = Spanish_Peru.

Corriendo el ejemplo que he publicado antes:

CREATE TABLE PERSONA (
      idPersona            SERIAL NOT NULL,
      nombres              TEXT NULL,
      apPaterno            TEXT NULL,
      apMaterno            TEXT NULL,
      PRIMARY KEY (idPersona)
);

insert into PERSONA values (  DEFAULT  ,  'juaN' , 'muÑante' , 'ruiZ' );

para las consultas:

    select * from persona
     where apPaterno  ILIKE 'muñante' ;

    select * from persona
     where apPaterno  ILIKE 'MUÑANTE' ;

    select * from persona
     where apPaterno  ILIKE 'muÑante' ;

me esta arrojando ahora si el resultado correcto que es la unica linea
de la tabla.


Jaime: He tratado de reproducir tu ejemplo y con tu  LOCALE =
Spanish_Ecuador y no he tenido los problemas que dices.

>
> prueba=# insert into persona values (default, 'Alicia', 'Oñate', 'nose');
> INSERT 0 1
> prueba=# select * from persona where appaterno ILIKE 'OÑATE';
>  idpersona | nombres | appaterno | apmaterno
> -----------+---------+-----------+-----------
> (0 filas)
>
> prueba=# select * from persona where appaterno ILIKE 'OñATE';
>  idpersona | nombres | appaterno | apmaterno
> -----------+---------+-----------+-----------
>          2 | Alicia  | Oñate     | nose
> (1 fila)
>
> prueba=# select * from persona where lower(appaterno) LIKE lower('OÑATE');
>  idpersona | nombres | appaterno | apmaterno
> -----------+---------+-----------+-----------
> (0 filas)
>

Ademas probando tu ejemplo para mi LOCALE = Spanish_Peru  los
resultados que se obtienen tambien son correctos.


Otra cosa que he encontado durante las pruebas que he efectuado. Al
momento de instalar postgres en windows, cuando se me pide los datos
en initdb, intenté:

1) LOCALE = C
   SERVER ENCONDIG = UTF8

   el  show lc_collate  devuelve C

2) LOCALE = C
   SERVER ENCONDIG = Latin1

   el  show lc_collate  devuelve C

3) LOCALE = Spanish_Peru
   SERVER ENCONDIG = UTF8

   el  show lc_collate  devuelve  Spanish_Mexico.1252

4) LOCALE = Spanish_Peru
   SERVER ENCONDIG = Latin1

   el  show lc_collate  devuelve Spanish_Peru.28591

5) LOCALE = Greek
   SERVER ENCONDIG = UTF8

   el  show lc_collate  devuelve Spanish_Mexico.1252

6) LOCALE = Spanish_Ecuador
   SERVER ENCONDIG = Latin1

   el  show lc_collate  devuelve Spanish_Ecuador.28591


Para 1) y 2) siempre "show lc_collate" devuelve C, pero he notado que
de 3) a 6)  si se escoge SERVER ENCONDIG = UTF8  me devuelve "show
lc_collate" el codigo de mi windows que es Spanish_Mexico.1252, pero
cuando se escoge SERVER ENCONDIG = Latin1 siempre "show lc_collate"
devuelve   LOCALE_ELEGIDO.28591
Alguien sabe el porque de este comportamiento ???



Hasta el momento LOCALE = C durante la instalacion parece ser el
problema para  ILIKE , UPPER y LOWER, pero por favor intenten ustedes
para las comprobaciones correspondientes.


Paolo.

In response to

pgsql-es-ayuda by date

Next:From: JorgeDate: 2006-04-25 07:22:15
Subject: RE: Problema al programar backup postgres con cron
Previous:From: antonio albiñana crespoDate: 2006-04-25 06:07:09
Subject: acceso

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