2016年4月14日 星期四

Oracle 中文數字排序 | Oracle order by chinese number

我在處理地址的中文排序
例如一街二街三街....
oracle預設的中文排序好像是照拼音
所以會發生二街(ㄦˋ)比三街(ㄙㄢ)後面的問題
若指定用筆劃排序
又會發現五街(四劃)比四街(五劃)前面的問題
後來問到一個語法叫TRANSLATE

ORDER BY  translate(road,'一二三四五六七八九','123456789');

參考:
http://www.cnblogs.com/huli-DBA/archive/2012/02/13/2348824.html

可以把指定的字元集中的字元一對一替換為替換字元集中的字元
所以就拿來處理中文的一到九
至於一個字的十不能換成10,其實也還好
例如 十四 十五 十六 會變成 十4 十5 十6
二十三 二十四 二十五 會變成 2十3 2十4 2十5
這樣排下去也還算是照著順序

沒有留言:

張貼留言