Oracle 默认情况下按默认顺序对 NULL 值进行排序
在本文中,我们将介绍 Oracle 数据库中默认情况下对 NULL 值进行排序的规则。Oracle 数据库默认按照升序对 NULL 值进行排序,将其放在非 NULL 值之前。这与其他一些数据库系统的排序规则有所不同,在其他数据库系统中,NULL 值被视为最大或最小值。
阅读更多:Oracle 教程
什么是 NULL 值?
在数据库中,NULL 表示缺少的值或未知的值。它不同于空字符串或零值,NULL 意味着数据缺失或未定义。当某个列中对应的数据没有值时,就会使用 NULL 值进行表示。
Oracle 的默认排序规则
在 Oracle 中,默认情况下,对 NULL 值进行排序时会将其放在非 NULL 值之前。举个例子,假设我们有以下一张学生成绩表:
| 学生姓名 | 成绩 |
|---|---|
| 小明 | 90 |
| 小红 | 85 |
| 小刚 | NULL |
| 小华 | 95 |
如果我们对成绩这一列进行排序,默认情况下,NULL 值会被排在最前面,其他非 NULL 值会按照升序进行排序。排序后的结果如下:
| 学生姓名 | 成绩 |
|---|---|
| 小刚 | NULL |
| 小红 | 85 |
| 小明 | 90 |
| 小华 | 95 |
可以看到,NULL 值被放在了最前面。
如何修改排序规则
如果我们希望 NULL 值在排序时被放在最后,而不是最前面,我们可以使用 Oracle 的排序函数来改变默认的排序规则。Oracle 提供了两个关键字用于管理 NULL 值的排序顺序:NULLS FIRST 和 NULLS LAST。
NULLS FIRST 关键字告诉 Oracle 在排序时将 NULL 值放在最前面,而 NULLS LAST 关键字告诉 Oracle 将 NULL 值放在最后。
以下是使用 NULLS LAST 关键字来修改排序规则的示例查询语句:
SELECT 学生姓名, 成绩
FROM 学生成绩
ORDER BY 成绩 NULLS LAST;
运行上述查询语句后,排序结果如下:
| 学生姓名 | 成绩 |
|---|---|
| 小红 | 85 |
| 小明 | 90 |
| 小华 | 95 |
| 小刚 | NULL |
可以看到,NULL 值现在被放在了最后。
总结
Oracle 数据库默认情况下将 NULL 值放在非 NULL 值之前进行排序。这与其他数据库系统的排序规则有所区别。如果需要将 NULL 值放在排序结果的最后,我们可以使用 NULLS LAST 关键字来修改排序规则。通过灵活运用 Oracle 的排序函数,我们可以根据实际需求对 NULL 值进行合理的排序处理。
极客笔记