pg数据库 设置不区分大小写_为什么我的PostgreSQL ORDER BY不区分大小写?

在Debian上的PostgreSQL 9.4.4与OS X上的9.3.4中,ORDER BY操作对大小写表现出不同行为。尽管两者LC_COLLATE都为en_US.UTF-8,但OS X版对大小写敏感,而Debian版不敏感。在Mac上通过指定'en_US.UTF-8'排序规则可得到大小写敏感排序,而在Debian上,'en_US.utf8'规则导致不区分大小写排序。问题可能源于排序规则的差异。
摘要由CSDN通过智能技术生成

我在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有不同的排序顺序?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值