天天看點

資料庫中文字段按拼音排序

使用 order by convert_to(city, ‘GBK’) 方式按中文字典順序排序, 測試如下:

create table public.test_city(id bigserial primary key, city char());
test#\d jinbo.test_city;
                                Table "public.test_city"
 Column |     Type      |                          Modifiers                           
--------+---------------+--------------------------------------------------------------
 id     | bigint        | not null default nextval('public.test_city_id_seq'::regclass)
 city   | character(10) | 
Indexes:
    "test_city_pkey" PRIMARY KEY, btree (id)

test=# insert INTO public.test_city(city) values ('上海'),('北京'),('廣州');
INSERT  
test=# insert INTO public.test_city(city) values ('西安'),('榆林'),('三亞');
INSERT  
test=# insert INTO public.test_city(city) values ('深圳'),('鞍山'),('昆明');
INSERT  
test=# insert INTO public.test_city(city) values ('大連'),('青島'),('成都');
INSERT  

test=# select * from public.test_city;
 id |     city     
----+--------------
  1 | 上海        
  2 | 北京        
  3 | 廣州        
  4 | 西安        
  5 | 榆林        
  6 | 三亞        
  7 | 深圳        
  8 | 鞍山        
  9 | 昆明        
 10 | 大連        
 11 | 青島        
 12 | 成都        
(12 rows)

test=# select * from public.test_city order by convert_to(city, 'GBK');
 id |     city     
----+--------------
  8 | 鞍山        
  2 | 北京        
 12 | 成都        
 10 | 大連        
  3 | 廣州        
  9 | 昆明        
 11 | 青島        
  6 | 三亞        
  1 | 上海        
  7 | 深圳        
  4 | 西安        
  5 | 榆林        
(12 rows)
           

繼續閱讀