您好,欢迎访问一九零五行业门户网

PostgreSQL大小写排序问题

在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)

其它类似信息

推荐信息