sql - 如何在 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
有人可以纠正我哪里出错并纠正我的查询吗?
解决方案
您可以使用to_number
和on conversion error
如下:
order by to_number(duration default -1 on conversion error) desc
使用此解决方案,您将最终获得所有非数值记录。
推荐阅读
- cassandra - 未找到请求的操作集的 Spring Data Cassandra 编解码器
<-> java.util.Set - mysql - sql中的时差计算
- javascript - javascript - 在特定字符串之后和下一个冒号之前检索字符串
- asp.net-mvc - ASP.NET 引导导航栏样式
- jquery - 希望 youtube 视频在悬停时播放,但也不在暂停时显示建议的视频
- r - 在闪亮中为 checkboxGroupInput() 使用一组动态选择
- amp-html - 'amp-fit-text' 中的 'min-font-size' 属性在 'amp-list' 块内不起作用
- php - MySQL PHP 列更新查询
- c - 如何仅使用
图书馆 - java - 如何在休眠中使用一对一/零映射