Sql 将varchar2转换为number不会产生正确的结果顺序

Sql 将varchar2转换为number不会产生正确的结果顺序,sql,oracle10g,Sql,Oracle10g,您好,我正在处理一个oracle DB,它的表id为varchar2,实际上只包含数字,例如2000、30201。现在我需要将这些值作为数字进行比较,所以我使用to_NUMBER()函数,但结果仍然不成功。下面是示例代码。非常感谢您的帮助 SELECT ID FROM facty WHERE to_number(ID)>2 ORDER BY ID 当前结果: 11,4,5,6,8,9 我需要它来生成4、5、6、8、9、11不要使用Oracle,但我猜您也需要在订单号上包含收件人编号(id

您好,我正在处理一个oracle DB,它的表id为varchar2,实际上只包含数字,例如2000、30201。现在我需要将这些值作为数字进行比较,所以我使用to_NUMBER()函数,但结果仍然不成功。下面是示例代码。非常感谢您的帮助

SELECT ID FROM facty WHERE to_number(ID)>2 ORDER BY ID
当前结果: 11,4,5,6,8,9


我需要它来生成4、5、6、8、9、11不要使用Oracle,但我猜您也需要在
订单号上包含
收件人编号(id)
。您当前的查询
orderby
使用varchar字段,而不是数字转换。

谢谢提示!!我试过按顺序编号(ID)并成功了。我知道这不是传统的做法,它会让生活变得更加困难,但这是一家公司目前的数据字典(遗留的东西),一些值后来变成了字母表,如“A302”,而一些值则是纯“30201”。我必须坚持下去。现在。你为什么把数字存储为文本?这是低效的,当您的一个ID是无效号码时,也会导致很多问题。