linux - 有没有办法让 PostgreSQL 在使用某种语言进行整理时不折叠标点符号和空格?

标签 linux macos postgresql collation

据我所知,PostgreSQL 将排序委托(delegate)给底层操作系统的 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

有什么方法可以在任何操作系统(尤其是 Linux)上安装 Postgres,以观察 ICU 风格的正确排序?

最佳答案

正如您所指出的,Postgres 依赖于操作系统来提供整理,除了直接连接到 ICU 之外,Postgres 几乎无能为力。

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

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

关于linux - 有没有办法让 PostgreSQL 在使用某种语言进行整理时不折叠标点符号和空格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16342796/

相关文章:

linux - 如何在xv6中获取指针的页目录

python /iptables : Original Destination IP

linux - 虽然导出 gg 我得到了未绑定(bind)的变量 gg

iphone - XCode 4 - 在调试期间观察自定义变量的值

postgresql - 永远运行大量记录的功能

sql - 有没有办法将文本数据加载到 PostgreSQL 数据库中?

linux - 有没有办法用BlueZ广告多个信标

macos - 如何链接不在标准位置的框架?

ruby-on-rails - 查询未命中索引 - 这些列是否适合索引?

java - 如果终端不执行任何操作,如何运行 java 类?