排序规则行为将取决于底层操作系统的语言环境支持 . 一般来说,我认为您应该期望对当前语言环境之外的字符进行相当可能的Unicode代码点排序 . 可能是default collatoin for the unicode collation algorithm .
我很难快速找到以不同方式进行整理的样本数据,以便对其进行测试 .
但请注意,您可以使用 COLLATE 术语按每列或每个操作声明归类,例如
CREATE TABLE sometable(
...,
companyname text COLLATE "ru_RU",
...
);
要么
SELECT *
FROM sometable
ORDER BY companyname COLLATE "ru_RU"
要么
SELECT *
FROM sometable
WHERE companyname < 'Компания' COLLATE "ru_RU"
所以你不仅限于数据库的整理 .
(这实际上是正确处理各种/混合语言数据的唯一方法,因为无论如何都没有对所有数据进行正确的整理) .
编辑显示示例:
test=> SHOW lc_collate;
lc_collate
------------
en_AU.utf8
(1 row)
test=> SELECT * FROM (VALUES ('z'),('aa')) x(y) ORDER BY y;
y
----
a
aa
z
(3 rows)
craig=> SELECT * FROM (VALUES ('z'),('aa')) x(y) ORDER BY y COLLATE "da_DK";
y
----
a
z
aa
(3 rows)
这也表明,独立于语言的校对概念完全是胡说八道,人们通常所说的“英语校对”或“按Unicode序列整理”(大多数是英语式的顺序) .