首页 > 解决方案 > 如何在 sql 中使用 order by desc 查询具有数值的 varchar2 字段

问题描述

我有一个带有 varchar 2 数据类型列的表,现在我想按 desc 顺序获取记录列和持续时间列,但没有按预期工作。

询问 :

select * from sampletable2
where code = 'C'
order by  duration desc ;

QUERY 输出如下所示:

    KeyNumber       ID    Code   BRANCH  records   Duration
             
    A907654234      4      C      ALA     100      99  
    A875678235      3      C      PHE     30       9  
    A123456789      1      C      HIE     78       45   
    A907863544      5      C      VAL     50       23   

我想要的是:

    KeyNumber       ID    Code   BRANCH  records   Duration
    A907654234      4      C      ALA     100      99 
    A123456789      1      C      HIE     78       45 
    A907863544      5      C      VAL     50       23     
    A875678235      3      C      PHE     30       9      
        

有人可以纠正我哪里出错并纠正我的查询吗?

标签: sqloracleplsql

解决方案


您可以使用to_numberon conversion error如下:

order by to_number(duration default -1 on conversion error) desc

使用此解决方案,您将最终获得所有非数值记录。


推荐阅读