根据我的理解,PostgreSQL将collation委托给底层操作系统的strcoll()函数,显然大多数(如果不是全部)Linux安装都利用了在UTF格式化时可选择折叠标点符号和空格的事实。 8。
例如,我在CentOS 6.4上的Postres 9.2中有一个数据库
ENCODING='UTF8'
LC_COLLATE='en_US.UTF8'
LC_CTYPE='en_US.UTF8'
然后运行查询
select * from (values('abc'),('ABC'),('Abc'),('...ABc'),('a BC')) x order by 1;
结果
abc
a BC
Abc
...ABc
ABC
Mac OS X似乎尊重标点符号和空格,但随后使用POSIX / C样式排序。 OS X上具有相同设置的类似数据库返回
...ABc
ABC
Abc
a BC
abc
无论操作系统如何,我都希望返回正确的排序规则(以及ICU Demo Project节目)
...ABc
a BC
abc
Abc
ABC
有没有办法在任何操作系统上安装Postgres,尤其是Linux,以便按照ICU的风格观察正确的整理?
答案 0 :(得分:1)
正如你所指出的那样,Postgres依靠操作系统来提供整理,而Postgres可以做的事情就如何整理事物而不是直接挂钩到ICU。
多年来,这样做一直是一个反复出现的讨论主题,但这不是一项微不足道的任务: