Mam tabeli z sortowaniem ustawiony cs_CZ (Czech):PostgreSQL niewłaściwie sortuje unicode znaki z Czech zestawień
Name | Encoding | Collation | CType
-----------+----------+-------------+-------------
foo | UTF8 | cs_CZ.UTF-8 | cs_CZ.UTF-8
ale kiedy zamówić przez ciąg, wynik nie jest klasyfikowane jako należy według czeskiego alfabetu :
=> SELECT surname FROM foo ORDER BY surname;
surname
-----------------
A
Da
Ďb
Dc
E
Więc to jest klasyfikowane jak gdyby znak Unicode akcent (d) przekształcono w wersji ASCII bez akcentu (D). Ale alfabet czeski to: ... C -> D -> Ď -> E ..., więc zwrócona kolejność jest niepoprawna (w tym przykładzie powinno być: A -> Da -> Dc -> Ďb -> E).
Czy to zwykle zachowanie PostgreSQL? Czy istnieje sposób, w jaki sposób jest poprawnie sortowany według alfabetu czeskiego?
EDYCJA: Próbowano na Postgres 9.1.4, oba mają takie samo zachowanie. Jest to maszyna Arch Linux.
EDIT2: Poprawiony przykład, Ď jest prawdziwym problemem.
Poinformuj nas, której wersji PostgreSQL używasz. –
Czy przypadkiem jesteś na PostgreSQL 9.1 lub nowszej wersji? Jeśli tak, czy kolumna * nazwisko * w tabeli * foo * jest ustawiona na inne sortowanie? –
Niestety, jest to Postgres 9.1.4 i jest taki sam na 9.2.4. Pytanie zaktualizowane. I nie, nie ma zestawienia specyficznego dla kolumn. –