ORDER BY [ ASC | DESC ] [ NULLS FIRST | LAST ]

create table hr.order_test (col_num number, col_var varchar2(32), col_date date) tablespace users;
insert into hr.order_test (col_num,col_var,col_date) values (3,'C',SYSDATE);
insert into hr.order_test (col_num,col_var,col_date) values (NULL,'G',SYSDATE);
insert into hr.order_test (col_num,col_var,col_date) values (2,'B',SYSDATE);
insert into hr.order_test (col_num,col_var,col_date) values (NULL,'E',SYSDATE);
insert into hr.order_test (col_num,col_var,col_date) values (1,'A', SYSDATE);
insert into hr.order_test (col_num,col_var,col_date) values (NULL,'F',SYSDATE);
insert into hr.order_test (col_num,col_var,col_date) values (4,'D',SYSDATE);
commit;

--- Non ordered.

SQL> SELECT * FROM hr.order_test;

   COL_NUM COL_VAR                          COL_DATE
---------- -------------------------------- ---------
         3 C                                20-FEB-15
           G                                20-FEB-15
         2 B                                20-FEB-15
           E                                20-FEB-15
         1 A                                20-FEB-15
           F                                20-FEB-15
         4 D                                20-FEB-15

--- We sorted the COL_NUM field in order ascending.
For default:
If the sort ASC then NULL LAST.
If the sort DESC then NULL FIRST.

SQL> SELECT * FROM hr.order_test ORDER BY COL_NUM ASC;

   COL_NUM COL_VAR                          COL_DATE
---------- -------------------------------- ---------
         1 A                                20-FEB-15
         2 B                                20-FEB-15
         3 C                                20-FEB-15
         4 D                                20-FEB-15
           F                                20-FEB-15
           G                                20-FEB-15
           E                                20-FEB-15

--- In this case, we want to order ascending and that nulls values are shown first.

SQL> SELECT * FROM hr.order_test ORDER BY COL_NUM ASC NULLS FIRST;

   COL_NUM COL_VAR                          COL_DATE
---------- -------------------------------- ---------
           E                                20-FEB-15
           F                                20-FEB-15
           G                                20-FEB-15
         1 A                                20-FEB-15
         2 B                                20-FEB-15
         3 C                                20-FEB-15
         4 D                                20-FEB-15

Comments