我在Debian上运行Postgres 9.4.4,我得到以下ORDER BY行为:

veure_test=# show LC_COLLATE;

lc_collate

-------------

en_US.UTF-8

(1 row)

veure_test=# SELECT regexp_split_to_table('D d a A c b CD Capacitor', ' ') ORDER BY 1;

regexp_split_to_table

-----------------------

a

A

b

c

Capacitor

CD

d

D

(8 rows)

和uname -a:

Linux ---- 3.2.0-4-amd64 #1 SMP Debian 3.2.65-1 x86_64 GNU/Linux

但是,在我的iMac上,使用Postgres 9.3.4,我得到以下内容:

veure_test=# show LC_COLLATE;

lc_collate

-------------

en_US.UTF-8

(1 row)

veure_test=# SELECT regexp_split_to_table('D d a A c b CD Capacitor', ' ') ORDER BY 1;

regexp_split_to_table

-----------------------

A

CD

Capacitor

D

a

b

c

d

(8 rows)

和uname -a:

Darwin ---- 14.4.0 Darwin Kernel Version 14.4.0: Thu May 28 11:35:04 PDT 2015; root:xnu-2782.30.5~1/RELEASE_X86_64 x86_64

我为什么Debian版本似乎不区分大小写而OS X版本不是这样,我感到很困惑.我缺少什么,或者我需要提供哪些其他信息?

更新:在我的Mac上,pg_collat​​ion表显示我有一个en_US.UTF-8排序规则,但在Debian上,我有一个en_US.utf8排序规则.因此,在我的Mac上:

veure_test=# with foo as (

SELECT regexp_split_to_table('D d a A c b CD Capacitor', ' ') as bar

)

SELECT bar FROM foo

ORDER BY bar collate "en_US.UTF-8";

bar

-----------

A

CD

Capacitor

D

a

b

c

d

(8 rows)

在Debian上:

veure_test=# with foo as (

SELECT regexp_split_to_table('D d a A c b CD Capacitor', ' ') as bar

)

SELECT bar FROM foo

ORDER BY bar collate "en_US.utf8";

bar

-----------

a

A

b

c

Capacitor

CD

d

D

(8 rows)

那么en_US.UTF-8和en_US.utf8有不同的排序顺序?

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐