科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道如何使用Oracle ORDER BY语句控制空数据

如何使用Oracle ORDER BY语句控制空数据

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

如果一个查询中包含了ORDER BY语句对输出结果进行排序,那么使用升序时,空数据的结果会排在最底部,实际上,空数据在Oracle数据库中被当作一个非常大的数值来处理的。

作者:开发者在线 来源:开发者在线 2007年8月30日

关键字: 空数据 ORDER BY ORACLE Bob Watkins

  • 评论
  • 分享微博
  • 分享邮件

空数据,有时被称作“空白”数据,在关系数据库的处理中会造成一些困难。如果一个查询中包含了ORDER BY语句对输出结果进行排序,那么使用升序时,空数据的结果会排在最底部;而使用降序排列时,空数据的结果会排在最顶部。实际上,空数据在Oracle数据库中被当作一个非常大的数值来处理的。

空数据会造成报告难以阅读,假设我们要进行一个简单的人力资源数据查询,需要降序列出所有的员工姓名和佣金(commission)比例,包括没有佣金收入的员工(commission_pct的值是空值),此查询的SQL代码是:

SELECT employee_id, last_name, first_name, commission_pct

FROM employees

ORDER BY commission_pct DESC;

运行这个查询的结果是没有用尽收入的员工会排在最前面,您需要详细查看才能发现到底谁获得了佣金收入。

在Oracle 8i中,有一个不太常用的语法可以修正这个问题,您所需要做的事情就是将以上SQL代码中的最后一样修改为:

ORDER BY commission_pct DESC NULLS LAST;

这样,含有空值的数据行就会排到最后,您也可以在升序排序中使用NULLS FIRST,这样含有空值的数据行会出现在报告的顶部。

如果您还在使用Oracle 8.0版或7.3版,那么您可以使用空值函数(Null Values function (NVL))来实现同样的效果。比如,以下是使用ORDER BY语句的例子:

ORDER BY NVL(commission_pct, -1);

这样,还有空值的数据行被当作-1值来进行排序,这样它们就会出现在输出结果的底部,而您也不会看到-1值出现在排序结果中,因为数据库查询是根据空值函数进行操作的,在SELECT语句中,不会显示这些具体的数值。

责任编辑:德东

查看本文国际来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章