When Oracle sorts data, nulls come out top in the sort order. So if you sort in ascending order, they appear last:
SQL> create table employees
2 (name1 varchar2(10))
3 /
Table created.
SQL> insert into employees values ('Andrew')
2 /
1 row created.
SQL> insert into employees values ('Fred')
2 /
1 row created.
SQL> insert into employees values (null)
2 /
1 row created.
SQL> select nvl(name1,'Null') first_name
2 from employees
3 order by name1 asc
4 /
FIRST_NAME
----------
Andrew
Fred
Null
And if you sort in descending order, they are shown first:
SQL> select nvl(name1,'Null') first_name
2 from employees
3 order by name1 desc
4 /
FIRST_NAME
----------
Null
Fred
Andrew
If you specify nulls first in the order by statement, the null values will appear before the rest of the data. This applies for both ascending and descending sorts:
SQL> select nvl(name1,'Null') first_name
2 from employees
3 order by name1 asc nulls first
4 /
FIRST_NAME
----------
Null
Andrew
Fred
SQL> select nvl(name1,'Null') first_name
2 from employees
3 order by name1 desc nulls first
4 /
FIRST_NAME
----------
Null
Fred
Andrew
Conversely, nulls last makes the null values appear after the other data. Again, this applies for both ascending and descending sorts:
SQL> select nvl(name1,'Null') first_name
2 from employees
3 order by name1 asc nulls last
4 /
FIRST_NAME
----------
Andrew
Fred
Null
SQL> select nvl(name1,'Null') first_name
2 from employees
3 order by name1 desc nulls last
4 /
FIRST_NAME
----------
Fred
Andrew
Null
No comments:
Post a Comment