PostgreSQL下,对汉字按拼音排序
参考学习此文:
http://blog.163.com/digoal@126/blog/static/163877040201173003547236/
建库
postgres=# \l List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges -----------+----------+----------+-------------+-------------+----------------------- db_utf8 | gao | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 | postgres | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 | template0 | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres (4 rows) postgres=#
建表
postgres=# \d List of relations Schema | Name | Type | Owner --------+-------------------+-------+---------- public | gao_chinese_order | table | postgres public | tbl_chinese_order | table | postgres (2 rows) postgres=#
insert into tbl_chinese_order values ('***'); insert into tbl_chinese_order values ('*德华'); insert into tbl_chinese_order values ('张学友');
普通排序
postgres=# select * from tbl_chinese_order order by info; info -------- *** *德华 张学友 (3 rows)
postgres=# select * from tbl_chinese_order order by convert_to(info,'SQL_ASCII'); info -------- *** *德华 张学友 (3 rows) postgres=#
按拼音排序:
postgres=# select * from tbl_chinese_order order by convert_to(info,'GBK'); info -------- *德华 *** 张学友 (3 rows) postgres=#
postgres=# select * from tbl_chinese_order order by convert_to(info,'GB18030'); info -------- *德华 *** 张学友 (3 rows) postgres=#