我有一个排序规则设置为 cs_CZ(捷克语)的表:
Name | Encoding | Collation | CType
-----------+----------+-------------+-------------
foo | UTF8 | cs_CZ.UTF-8 | cs_CZ.UTF-8
但是当我按字符串排序时,结果没有按照捷克字母排序:
=> SELECT surname FROM foo ORDER BY surname;
surname
-----------------
A
Da
Ďb
Dc
E
所以它的排序就像 unicode 重音字符 (Ď) 被转换为没有重音 (D) 的 ASCII 版本。但是捷克字母是:... C -> D -> Ď -> E ...,所以返回的顺序不正确(在这个例子中应该是:A -> Da -> Dc -> Ďb -> E )。
这是通常的 PostgreSQL 行为吗?有没有办法根据捷克字母对其进行正确排序?
编辑:在 Postgres 9.1.4 上试过,两者都有相同的行为。它是一个 Arch Linux 机器。
EDIT2:调整后的例子,Ď 是真正的问题。