postgres整理差异。 osx v ubuntu

所以,我最近才意识到整理对postgres来说是一个巨大的交易,许多评论都把OSX / locale支持称为“破”,这并没有启发我。 为了这个问题的目的,我忽略了sorting的表/列默认方面,并明确指定它。

  • 我的笔记本电脑是OSG和Postgres 9.2.4
  • 我的服务器是Ubuntu的Postgres 9.1.9

两者共同:

# show lc_collate ; en_US.UTF-8 # show lc_ctype ; en_US.UTF-8 

在我的笔记本上:

 select ',' < '-' collate "en_US.UTF-8" as result; true 

现在,我的服务器没有sorting“en_US.UTF-8”,但它确实有“en_US.utf8”(我认识到是不是同样的事情,但我希望它performance相同)

 select ',' < '-' collate "en_US.utf8" as result; false 

所以,这是我吓坏了。 “C”顺序总是会说(对于两台机器来说)“,”小于“ – ”,这是我的想法。

哪个utf8实现是正确的? 如果有人能指出我的定义是有帮助的,因为大多数情况下我只能在osx上find“破”的指责。 所以我会担心,我一直认为逗号在连字符之前的命令是错误的,但是input一个合理依赖的文本和unicode等的python仲裁。 这在ubuntu服务器上产生:

 >>> print u',' < u'-', ',' < '-' True True 

所以,我感觉很像这个整理概念在我的Ubuntu服务器上比在我的OSX服务器上更糟糕。 但我没有一个“适当”的sorting规则来创build我的“en_US.UTF-8”sorting从阿拉“创build整理”,所以我失去了如何创造平价,或哪个答案(真/假)我应该用作正确的参考。 (除了ascii命令外,个人还是ascii字符)。

所以,简而言之,这是en_US.UTF-8的正确答案?

在默认Unicode排序规则元素表中,您可以看到这两个条目:

 002C ; [*0220.0020.0002] # COMMA 002D ; [*020D.0020.0002] # HYPHEN-MINUS 

在此,COMMA的主要重量大于HYPHEN-MINUS的主要重量,因此HYPHEN-MINUS在COMMA之前进行分类。

请注意,这是根据采用默认权重的Unicode排序算法预期的排序顺序。 如果您希望按ASCII字节值进行排序,则会得到不同的顺序。 还有其他有效的订单。 但是,如果区域设置名为“en_US.UTF-8”(或“en_US.utf8”,同样的东西),那么你可能会期望Unicode顺序。 但是,这是你和你的操作系统供应商之间的。