1. 程式人生 > >Oracle varchar型別數值排序問題

Oracle varchar型別數值排序問題

問題描述:

A表中存在一個型別為varchar2的欄位xh(序號),現根據xh排序

SQL:select xh from A a order by a.xh;

查詢的結果為:1、10、11、12、13、14、15、16、17、18、19、2、20、21、22、23。。。。

這不是我想要的結果,理想的結果為:1、2、3、4、5、6、7、8、9、10、11。。。。

問題分析:

排序時,因xh為varchar型別故排序時按照xh的字元從左向右依次比較。

解決辦法:

利用CAST函式把該欄位的值由varchar2轉為int型別

select xh from A a order by CAST(a.xh AS INTEGER);

查詢結果為:1、2、3、4、5、6、7、8、9、10、11。。。。