PostgreSQL下,对汉字按拼音排序

时间:2023-03-10 05:42:01
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=#