在postgresql中创建如下表并插入如下数据create table quot;tttquot; ( id varchar(32) primary key not null, name varch
在postgresql中创建如下表并插入如下数据
create table ttt (
id varchar(32) primary key not null,
name varchar(128) not null
);
create unique index ttt_name_idx on ttt(name);
insert into ttt values('1' , 'a');
insert into ttt values('2' , 'a');
insert into ttt values('3' , 'b');
insert into ttt values('4' , 'b');
此时如果执行
select * from ttt order by name;
将会得到以下结果
id | name
----------+------------
2 | a
1 | a
4 | b
3 | b
(4 rows)
这里我们期望name的排序是先按大写字母排序,然后再按照小写字母排序。
查了一下资料,可以通过如下操作来解决以上排序问题
1. 首先备份数据库配置文件和数据文件(最好导出数据),默认情况下就是/var/lib/pgsql/data目录下所有东东
2. $ sudo /etc/init.d/postgresql stop
3. $ sudo su - postgres
# initdb --lc-collate=c
4. $ sudo /etc/init.d/postgresql start
5. 再次执行以下查询
select * from ttt order by name;
结果如下:
id | name
----+------
1 | a
3 | b
2 | a
4 | b
(4 rows)
,