Обсуждение: RES: RES: Issue on Varchar Ordering
Thanks everybody.
The correct order in Portuguese would return as brazilian telephone guide
order as below:
select * from aluno order by nome
id nome
38 GABRIEL ALCIDES KLIM PERONDI
40 GABRIEL ALEXANDRE DA SILVA MANICA
36 GABRIELA HELEDA DE SOUZA
37 GABRIELA JACOBY NOS
39 GABRIELA LETICIA BATISTA NUNES
Indeed using POSIX, C, the result above is Ok, but it doesn't work for me
because of the accented and special characters.
-----Mensagem original-----
De: Alvaro Herrera [mailto:alvherre@commandprompt.com]
Enviada em: quinta-feira, 17 de agosto de 2006 11:53
Para: Erika Terahata Torres Prada e Silva - MPS
Cc: pgsql-admin@postgresql.org
Assunto: Re: RES: [ADMIN] Issue on Varchar Ordering
Erika Terahata Torres Prada e Silva - MPS wrote:
> Peter,
>
> Thanks for answering.
>
> But it's not correct to my language pt_BR and it worked correctly with
> PostgreSQL at Windows and FreeBSD. I have this problem only with Debian
and
> now I'm looking for some Debian related issue.
It's still correct -- it's the ordering you'll find on the telephone
guide. It works the same for portuguese and for spanish and a lot
others. The problem with going to C locale (POSIX), as suggested in a
related follow-up, is that it sorts by byte value, which is not at all
correct when you start sorting stuff that contains funny letters
(accented vowels, etc). It works for english people just because they
don't worry about accents at all. I wonder if portuguese has special
sorting rules for "nh", for example? You'll lose that if you just
change to the C locale.
I think you _can_ define a collation on which spaces are significant,
but it's also a significant amount of work. (And IMHO not at all worth
the trouble.)
--
Alvaro Herrera http://www.CommandPrompt.com/
PostgreSQL Replication, Consulting, Custom Development, 24x7 support
Erika Terahata Torres Prada e Silva - MPS wrote: > > Thanks everybody. > > > The correct order in Portuguese would return as brazilian telephone guide > order as below: > > select * from aluno order by nome > id nome > 38 GABRIEL ALCIDES KLIM PERONDI > 40 GABRIEL ALEXANDRE DA SILVA MANICA > 36 GABRIELA HELEDA DE SOUZA > 37 GABRIELA JACOBY NOS > 39 GABRIELA LETICIA BATISTA NUNES > > Indeed using POSIX, C, the result above is Ok, but it doesn't work for me > because of the accented and special characters. I stand corrected -- that is the sort order returned by sort under the pt_BR locale (which is indeed different from the spanish sort order). What's your lc_collate setting? What does this return on your system? LC_COLLATE=pt_PT sort << EOF GABRIEL ALEXANDRE DA SILVA MANICA GABRIELA JACOBY NOS GABRIELA HELEDA DE SOUZA GABRIELA LETICIA BATISTA NUNES GABRIEL ALCIDES KLIM PERONDI EOF On my system it outputs the order you show above, which shows that my locale is correctly defined per your expectations. -- Alvaro Herrera http://www.CommandPrompt.com/ PostgreSQL Replication, Consulting, Custom Development, 24x7 support
Alvaro Herrera wrote: > LC_COLLATE=pt_PT sort << EOF > GABRIEL ALEXANDRE DA SILVA MANICA > GABRIELA JACOBY NOS > GABRIELA HELEDA DE SOUZA > GABRIELA LETICIA BATISTA NUNES > GABRIEL ALCIDES KLIM PERONDI > EOF > > On my system it outputs the order you show above, which shows that my > locale is correctly defined per your expectations. That is absolutely wild. This will indeed return a space-sensitive sort under pt_BR, but not under, say, de_DE. So there is order in this world! (heh) This is on Debian, so the original poster has some configuration or version difference. Please tell OS version, and the output of "SHOW lc_collate". -- Peter Eisentraut http://developer.postgresql.org/~petere/