请问在ORACLE中有什么办法能不用TO_NUMBER()函数对VARCHAR2类型的数值(FLOAT型)按大小进行排序?
有谁知道的请将办法告诉我,有帮助的一定加分,在线等...

解决方案 »

  1.   

    可以转换成相同长度再排序
    如:
    create table test(col varchar2(10));
    select * from test order by lpad(col,10,'0');
      

  2.   

    你说的办法的确可以,但是SQL语句里面不能用函数。这事系统的问题,我就是卡在这里了。
      

  3.   

    plsql 中不能使用函数?? 那你应该解决系统的问题
      

  4.   

    就是,有没有什么办法在ORACLE里面进行编程?
      

  5.   

    oracle编程,当然是可以的,通过写存储过程来解决。
    搜一下oracle存储过程的资料吧
    如:http://tech.it168.com/a2009/0305/267/000000267674.shtml
      

  6.   

    最简单而且有效的还是to_number
    另外float数值要进行数字比较,本来就应该存在varchar2类型的字段里
    不用to_number的话就需要对比较的对象进行转换,转成和前者长度相等,小数位数相同的字符串来比较
      

  7.   

    什么系统啊?不能用函数,那你的统计怎么办?
    varchar2的数值比较一般要格式化成固定长度,小数点前后补齐的
      

  8.   

    呵呵!这可能是底层的问题了。我的SQL语句是通过标签传到后台的。底层不能识别TO_NUMBER()函数。
      

  9.   

    不是专门针对ORACLE数据库的自定义标签。
      

  10.   

    SQL> select '88'-'77' from dual; '88'-'77'
    ----------
            11如果不用to_number函数,只要你的varchar2能够在转换成number的前提下,oracle是会自动转型的。
      

  11.   

    是这样的,如果不考虑性能或其他意外情况,oracle会尽量来满足用户的期望操作,前提是要给出能让oracle帮你完成的数据,你给的这个串首先要是个小数,否则oracle无能为力了