问题描述:
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。。。。