有没有办法让PostgreSQL在使用语言进行整理时不会丢失标点符号和空格?

时间:2013-05-02 16:09:03

标签: linux macos postgresql collation

根据我的理解,PostgreSQL将collat​​ion委托给底层操作系统的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的风格观察正确的整理?

1 个答案:

答案 0 :(得分:1)

正如你所指出的那样,Postgres依靠操作系统来提供整理,而Postgres可以做的事情就如何整理事物而不是直接挂钩到ICU。

多年来,这样做一直是一个反复出现的讨论主题,但这不是一项微不足道的任务:

http://wiki.postgresql.org/wiki/Todo:ICU

相关问题