Oracle中如果直接对varchar2类型进行排序,如果直接order by 字段,可能会出现11<2的情况。
例如:直接order by排序产生结果:0>1>11>2>3。这是因为varchar2类型实际排序的时候,首先只比较第一位数字大小,然后比较第二位,以此类推。
解决方案:
- 使用CAST函数。 Oracle的CAST可以将列字段类型转化成对应类型的函数。但是SN必须为全数字字符串,如果SN中含有除数字外的其它字符SQL会报错。
- 使用TO_NUMBER。Oracle的TO_NUMBER函数是将字段类型转化为数字类型,和CAST一样,如果含有其它的字符也会报错