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 |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
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.
From | Date | Subject | |
---|---|---|---|
Next Message | Jorge | 2006-04-25 07:22:15 | RE: Problema al programar backup postgres con cron |
Previous Message | antonio albiñana crespo | 2006-04-25 06:07:09 | acceso |