gpt4 book ai didi

PostgreSQL 不正确地使用捷克语排序规则对 unicode 字符进行排序

转载 作者:行者123 更新时间:2023-11-29 11:24:13 24 4
gpt4 key购买 nike

我有一个排序规则设置为 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: 调整后的示例,Ď 才是真正的问题。

最佳答案

这是正确的。 á, ď, é, ě, í, ň, ó, ť, ú, ů, ý 的重音应该被忽略,见article

捷克语排序规则有点复杂:)

关于PostgreSQL 不正确地使用捷克语排序规则对 unicode 字符进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16839825/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com