ORACLE-SQL:排序防止NULL影响排序结果的处理方法

来源:互联网 发布:基数排序算法 编辑:程序博客网 时间:2024/05/01 13:44
1.不加“关照”的order by升序排序效果--NULL值在后。
sec@ora10g> select * from t order by x;
         X
----------
         1
         2
         3
         4
7 rows selected.
2.不加“关照”的order by降序排序效果--NULL值在前。
sec@ora10g> select * from t order by x desc;
         X
----------
         4
         3
         2
         1
7 rows selected.
3.特殊“关照”的order by升序排序效果--NULL值在前。
sec@ora10g> select * from t order by x nulls first;
         X
----------
         1
         2
         3
         4
7 rows selected.
4.特殊“关照”的order by降序排序效果--NULL值在后。
sec@ora10g> select * from t order by x desc nulls last;
         X
----------
         4
         3
         2
         1
7 rows selected.
5.规律总结
1)不加“关照”的情况下,我们可以把那些NULL值假想为所有内容中值是最大的,因此,升序排序后NULL值在最后,倒序排序后NULL值在最前!
2)特殊“关照”的情况下,当指定“NULLS FIRST”时,无论是升序排序还是倒序排序,NULL值都会排列在最前面;当指定“NULLS LAST”时,无论是升序排序还是倒序排序,NULL值都会排列在最后面。
6.Oracle官方文档中有关“NULLS FIRST | NULLS LAST”的参考内容
http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/statements_10002.htm#i2171079
摘录在此:
NULLS FIRST | NULLS LAST
Specify whether returned rows containing null values should appear first or last in the ordering sequence.

NULLS LAST is the default for ascending order, and NULLS FIRST is the default for descending order.



转载自:http://yuanlonglongzyq.blog.163.com/blog/static/181509642201252092633793/

0 0
原创粉丝点击