Postgresql order 通过返回两个不同的命令
Postgresql order by returning two different orders
我有一个 PostgreSQL
测试版服务器 运行 和一个 运行 本地服务器。在两者上,我都有一个名为 profile
的 table,其中有一个名为 name
的列,类型为 character varying (255)
。我检查过数据库是否具有相同的值。
奇怪的是,当我在 profile
table 和 order by name asc
上执行 select 时,我得到了不同的结果。因此,在我的本地数据库中,名称为 (I)Contractor
的配置文件是第一个,而在测试版配置文件中,名称为 3B
的配置文件是第一个。
所以在我的本地数据库中,(
似乎出现在数字字符之前,反之亦然。知道这是怎么回事吗?不同版本的 Postgresql 排序规则会有所不同吗?
此行为的原因可能在于两台服务器 运行 在两个不同的操作系统上(例如 Gnu Linux 和 MS Windows)。排序方法的不同是由于排序规则是由操作系统提供的。要获得相同的排序顺序,您可以使用 collate
:
select name from profile order by name collate "C"
另见 。
我有一个 PostgreSQL
测试版服务器 运行 和一个 运行 本地服务器。在两者上,我都有一个名为 profile
的 table,其中有一个名为 name
的列,类型为 character varying (255)
。我检查过数据库是否具有相同的值。
奇怪的是,当我在 profile
table 和 order by name asc
上执行 select 时,我得到了不同的结果。因此,在我的本地数据库中,名称为 (I)Contractor
的配置文件是第一个,而在测试版配置文件中,名称为 3B
的配置文件是第一个。
所以在我的本地数据库中,(
似乎出现在数字字符之前,反之亦然。知道这是怎么回事吗?不同版本的 Postgresql 排序规则会有所不同吗?
此行为的原因可能在于两台服务器 运行 在两个不同的操作系统上(例如 Gnu Linux 和 MS Windows)。排序方法的不同是由于排序规则是由操作系统提供的。要获得相同的排序顺序,您可以使用 collate
:
select name from profile order by name collate "C"
另见