>
> Alguém sabe porque o comportamento natural deste encoding já não é este?



O padrão Unicode estabelece inicialmente que espaços e pontuação têm esse
comportamento nas comparações [1] em todas as línguas - não só no
português. Teste com outras línguas e vai ver o mesmo resultado:
    select * from teste2 order by nome collate "en_US";

Mas ele também dá diversos parâmetros para customizarmos os resultados. Por
exemplo, as variantes "shifted" e "noignore" devem resolver a questão.
Infelizmente o Postgres não nos dá acesso a nenhuma variante, então teste
pela linha de comando colocando um arquivo de texto com aqueles nomes e
ordenando:


% LC_COLLATE=pt_BR sort <teste.txt
RAFAELA BARBOSA
RAFAELA BRAGA
RAFAELA CARVALHO
RAFAELA CHINAIDRE
RAFAELA CRISLAINE
RAFAEL ALBINO
RAFAEL ALFENA
RAFAEL ALMEIDA
RAFAEL ALVES
RAFAEL AMANCIO
RAFAELA MORADA
RAFAEL ANDRE
RAFAEL ARRUDA
RAFAELA TEDESCO
RAFAELA TORQUATO
RAFAEL AUGUSTO


% LC_COLLATE=pt_BR-ka-shifted sort <teste.txt
RAFAEL ALBINO
RAFAEL ALFENA
RAFAEL ALMEIDA
RAFAEL ALVES
RAFAEL AMANCIO
RAFAEL ANDRE
RAFAEL ARRUDA
RAFAEL AUGUSTO
RAFAELA BARBOSA
RAFAELA BRAGA
RAFAELA CARVALHO
RAFAELA CHINAIDRE
RAFAELA CRISLAINE
RAFAELA MORADA
RAFAELA TEDESCO
RAFAELA TORQUATO



Então a solução ideal poderia ser tão simples quanto:
    select * from teste2 order by nome collate "pt_BR-ka-shifted";

Ou:
    create table teste2 ( nome varchar(50) collate "pt_BR-ka-shifted" );

Ou:
    alter collation "pt_BR" set variant to 'shifted';


Infelizmente hoje em dia todos esses comandos (especialmente o último por
diversas razões) vão falhar no Postgres porque ele não sabe lidar com
variantes de locales.

Mas desenvolver essa funcionalidade e enviar o patch seria um bom projeto
para quem tem algum tempo livre.


[1] http://unicode.org/reports/tr10/
[2] http://unicode.org/faq/collation.html
[3] http://unicode.org/reports/tr35/tr35-collation.html
<http://www.unicode.org/reports/tr35/tr35-collation.html>
[4] http://unicode.org/reports/tr35/

Até mais,
-- 

Arthur Nascimento - tureba
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a