Postgresql命令返回两个不同的命令

时间:2015-08-10 16:38:45

标签: postgresql sorting sql-order-by

我有一个运行测试版的PostgreSQL服务器和一个在本地运行的服务器。在两者上,我有一个名为profile的表,其中一列名为name,类型为character varying (255)。我已经检查过dbs具有相同的值。

奇怪的部分是当我在profile表格上选择order by name asc时,我得到了不同的结果。因此,在我的本地数据库中,名为(I)Contractor的个人资料是第一个,名为3B的测试版个人资料是第一个。

所以我的本地数据库(似乎出现在数字字符之前,反之亦然。知道这是怎么回事吗?对于不同版本的Postgresql,排序规则会有所不同吗?

1 个答案:

答案 0 :(得分:1)

这种行为的原因可能在于两台服务器在两个不同的操作系统上运行(例如Gnu Linux和MS Windows)。排序方法的不同之处在于排序是由操作系统提供的。要获得相同的排序顺序,您可以使用collate

select name from profile order by name collate "C"

另见Different behaviour in “order by” clause: Oracle vs. PostgreSQL