【发布时间】:2015-08-10 16:38:44
【问题描述】:
我有一台在测试版上运行的PostgreSQL 服务器和一台在本地运行的服务器。在两者上,我都有一个名为profile 的表,其中有一列名为name 的类型为character varying (255)。我检查了 dbs 是否具有相同的值。
奇怪的是,当我使用order by name asc 对profile 表进行选择时,我得到了不同的结果。所以在我的本地数据库上,名称为 (I)Contractor 的配置文件是第一个,而名称为 3B 的 beta 配置文件是第一个。
所以在我的本地数据库中,( 似乎在数字字符之前,反之亦然。知道这是怎么发生的吗?不同版本的 Postgresql 排序规则会不会不同?
【问题讨论】:
-
两个数据库的编码是否相同?就像 ASCII 与 UTF-8 与其他东西一样?
-
在两台服务器上运行
SHOW LC_COLLATE命令并比较它们的结果。 LC_COLLATE 参数影响 ORDER BY 中字符串的排序顺序。 -
@kordiko 你是对的。我的价值观是
en_US.UTF-8和English_United States.1252。谢谢
标签: postgresql sorting sql-order-by