一、 locale在哪里
在Windows平台的安装过程中,有一步需要选择locale,几个主要选项是Default locale
、C
和Chinese (Simplified), China
二、 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中文)
就很完美
2. C
盲猜英文按照ASCII码排序。中文看不透了。
3. Chinese (Simplified), China
Win10系统,PostgreSQL10.11.1安装过程locale选择Chinese (Simplified), China
安装失败
4. 其他
英文符合习惯.中文与C
结果一致,都不符合日常使用习惯。
参考文献
[1] PostgreSQL中的Locale设置
[2] 完美主义,用PostgreSQL,要设置好locale
[3] PostgreSQL的区域设置
[4] PostgreSQL中的区域和编码