Re: Ordenación con caracteres latinos

From: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
To: David Prieto <davidp(at)sgth(dot)es>
Cc: 'Xavier Vidal' <xvpxvp(at)menta(dot)net>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Ordenación con caracteres latinos
Date: 2005-09-28 13:02:11
Message-ID: 20050928130211.GA5093@surnet.cl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola,

Javier Vidal escribio:

> Perdon, ha sido un error mio de copias y pegar
>
> El ejemplo es este:
>
> Primer apellido
> ------------------
> Gomez
> Guadix
> Gómez

El collate parece ser ASCII. Aca con tu ejemplo, en una base de datos
que realmente es Latin-1, tengo esto:

alvherre=# create table persona (apellido text);
inseCREATE TABLE
alvherre=# insert into persona values ('Gomez');
INSERT 0 1
alvherre=# insert into persona values ('Guadix');
INSERT 0 1
alvherre=# insert into persona values ('Gómez');
INSERT 0 1
alvherre=# select * from persona order by apellido;
apellido
----------
Gomez
Gómez
Guadix
(3 filas)

David Prieto escribio:

> Supongo que la ordenación la haces con "select... Order by..." (es
> decir, que el que ordena es el postgresql) y no recoges todos los datos
> y los ordenas luego desde PHP, ¿verdad?
>
> Tengo una base de datos creada con "createdb -E LATIN1". Por probar, he
> creado una tabla e insertado varios valores y me sale:
>
> select * from nombres order by nombre;
> nombre
> ----------
> García
> Gómez
> Gomez
> Gonzalez
>
> Es decir: PARECE que sale correctamente (sólo que "ó" va antes de "o").

Aca parece que tu problema es que la base de datos debe ser Latin-1 y el
terminal debe ser utf-8, o lo contrario, o alguna ensalada rara de
encodings (o el terminal es latin-1 pero las variables de locale son
utf-8, o al reves). Observa mi ejemplo mas arriba, que ordena la o
correctamente con respecto a la ó.

Y sobre todo observa este otro ejemplo:

> select * from nombres order by nombre;
> nombre
> ---------------
> García
> Gómez
> Gómez Alonso
> Gómez Pérez
> Gomez
> Gomez Alvarez
> Gonzalez
> (7 filas)

alvherre=# select * from persona order by apellido;
apellido
---------------
García
Gomez
Gómez
Gómez Alonso
Gómez Alvarez
Gómez Pérez
González
Guadix
(8 filas)

Yo diria que los ambientes de ambos estan mal configurados.

--
Alvaro Herrera http://www.PlanetPostgreSQL.org
"Para tener más hay que desear menos"

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alfredo Rico 2005-09-28 13:02:33 Re: PReunta sobre esquemas
Previous Message Johan Petit 2005-09-28 12:56:51 Clave de postgres