Ho una tabella con le regole di confronto impostato su cs_CZ (Repubblica):PostgreSQL ordina in modo improprio i caratteri Unicode con collazione Repubblica
Name | Encoding | Collation | CType
-----------+----------+-------------+-------------
foo | UTF8 | cs_CZ.UTF-8 | cs_CZ.UTF-8
ma quando ordino da stringa, risultato non è ordinato come dovrebbe essere secondo l'alfabeto Repubblica :
=> SELECT surname FROM foo ORDER BY surname;
surname
-----------------
A
Da
Ďb
Dc
E
Così è ordinato come se il carattere Unicode accento (D) è stato convertito alla sua versione ASCII senza accento (D). Ma l'alfabeto ceco è: ... C -> D -> Ď -> E ..., quindi l'ordine restituito non è corretto (in questo esempio dovrebbe essere: A -> Da -> Dc -> Ďb -> E).
Questo è il solito comportamento di PostgreSQL? C'è un modo per farlo ordinare correttamente secondo l'alfabeto ceco?
MODIFICA: Provato su Postgres 9.1.4, entrambi hanno lo stesso comportamento. È una macchina Arch Linux.
EDIT2: Esempio corretto, il Ď è il vero problema.
Indicare la versione di PostgreSQL che si sta utilizzando. –
Giusto per caso, ti capita di trovarti su PostgreSQL 9.1 o una versione più recente? In tal caso, la colonna * cognome * nella tabella * pippo * è impostata su un confronto diverso? –
Siamo spiacenti, è Postgres 9.1.4 ed è lo stesso in 9.2.4. Domanda aggiornata. E no, non ci sono regole di confronto specifiche per la colonna. –