PostgreSQL的locale对排序的影响

一、 locale在哪里

在Windows平台的安装过程中,有一步需要选择locale,几个主要选项是Default localeCChinese (Simplified), China
C

二、 locale干啥的

locale可以解释为地区,这里可以理解为按语言划分的地区,通过列出的选项就能看出来。
因此locale会决定PostgreSQL“说什么话”,选择了英语,就很难对中文内容做出正确的操作。
最直观的表现就是相同内容,排序方式不同

三、 locale不一样会怎样

下面一段SQL语句,在不同loacle设定的PostgreSQL10.11中执行,得到不同的结果

create table x (n varchar(4));
insert into x values('王');
insert into x values('李');
insert into x values('里');
insert into x values('張');
insert into x values('莉');
insert into x values('裏');
insert into x values('刘');
insert into x values('张');
insert into x values('a');
insert into x values('b');
insert into x values('A');
insert into x values('B');
select * from x order by n;

1. Default locale(Win10中文)

c1
c3r
就很完美

2. C

c2
c2r
盲猜英文按照ASCII码排序。中文看不透了。

3. Chinese (Simplified), China

Win10系统,PostgreSQL10.11.1安装过程locale选择Chinese (Simplified), China安装失败

4. 其他

c4
c4r
英文符合习惯.中文与C结果一致,都不符合日常使用习惯。

参考文献

[1] PostgreSQL中的Locale设置
[2] 完美主义,用PostgreSQL,要设置好locale
[3] PostgreSQL的区域设置
[4] PostgreSQL中的区域和编码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值