所以,我最近开始意识到排序规则在 postgres 上很重要,并且许多评论将 OSX / 语言环境支持称为“损坏”,这并没有启发我。出于这个问题的目的,我忽略了排序规则的表/列默认方面,并明确指定它。
- 我的笔记本电脑是带有 postgres 9.2.4 的 osx
- 我的服务器是带有 postgres 9.1.9 的 ubuntu
两者共有:
# show lc_collate ;
en_US.UTF-8
# show lc_ctype ;
en_US.UTF-8
在我的笔记本电脑上:
select ',' < '-' collate "en_US.UTF-8" as result;
true
现在,我的服务器没有排序规则“en_US.UTF-8”,但它确实有“en_US.utf8”(我承认这不是一回事,尽管我希望它的行为相同)
select ',' < '-' collate "en_US.utf8" as result;
false
所以,这就是我吓坏的地方。“C”命令总是说(对于两台机器)','小于'-',我的大脑会同意。
哪个 utf8 实现是正确的?如果有人能指出我的定义会有所帮助,因为大多数情况下我只能找到针对 osx 的“破碎”指控。所以我担心我一生都在错误地认为逗号在连字符之前排序,但是输入一个合理依赖的文本和unicode等python的仲裁器。在 ubuntu 服务器上产生:
>>> print u',' < u'-', ',' < '-'
True True
所以,我感觉这个排序规则概念在我的 ubuntu 服务器上比在我的 osx 服务器上更糟糕。但我没有“正确”排序规则来从 ala“创建排序规则”创建我的“en_US.UTF-8”排序规则,所以我不知道如何创建奇偶校验,或者哪个答案(真/假)我应该用作正确的参考。(除了个人支持 ascii 命令之外,毕竟是 ascii 字符)。
所以,简而言之,哪个是 en_US.UTF-8 的正确答案?