在oracle中查詢的數據按漢語拼音首字母排序

sql查詢出的數據有好幾十條或者下拉列表有幾十個,這時如何快速定位到自己想找的位置呢,這要在sql編寫時按漢語拼音排序了,但是該怎樣寫呢,請看

工具/原料

oracle
計算機

方法/步驟

首先安裝Oracle和PL/SQL Developer,登陸PL/SQL Developer,登陸界面如圖所示。

例如要查詢的表名為base_service,普通查詢sql為select * from base_service,結果如圖

查詢的sql為 select * from base_service order by nlssort(service_name,'NLS_SORT=SCHINESE_PINYIN_M') ,效果如圖

看著sql和效果圖,有些人肯定覺得我的sql寫的麻煩了,select * from base_service order by service_name也可以,效果圖如圖所示

也是按拼音排序的,為什麼呢?這是因為按拼音排序是按ASCII的大小來排序的,ASCII中有一級漢字和二級漢字之分,如果全是一級漢字,那麼兩種方法就正確,如果有二級漢字的時候,第二種就不正確。看sql

with a as (select '{' name from dual union all

select '%' name from dual union all

select '中' name from dual union all

select '鑫' name from dual union all

select '木' name from dual union all

select '酥' name from dual union all

select '貼' name from dual

)

select name ,ascii(name) from a order by name ,效果如圖所示

用第二種方法,會看到「鑫」和「中」的順序顛倒了,如果用第一種方法,效果如圖。

本文內容整理自網絡, 文中所有觀點看法不代表淘大白的立場