null値のデフォルトの並び順はデータベースによって違います。カラムにnull値が含まれる場合は注意が必要です。
1. PostgreSQL
ORDER BY句で指定したカラムに続けて、NULLS FIRST / NULLS LASTを指定する。
--col1で昇順にしてnull値を最初に表示する
SELECT id, col1, col2 FROM table1 ORDER BY col1 NULLS FIRST;
--col1で降順にしてnull値を最後に表示する
SELECT id, col1, col2 FROM table1 ORDER BY col1 DESC NULLS LAST;
2. MySQL
ORDER BY句でIS NULL ASC / IS NULL DESCを指定する。
--col1で昇順にしてnull値を最初に表示する
SELECT id, col1, col2 FROM table1 ORDER BY col1 IS NULL ASC, col1;
--col1で降順にしてnull値を最後に表示する
SELECT id, col1, col2 FROM table1 ORDER BY col1 IS NULL DESC, col1 DESC;
3. Oracle
ORDER BY句で指定したカラムに続けて、NULLS FIRST / NULLS LASTを指定する。
--col1で昇順にしてnull値を最初に表示する
SELECT id, col1, col2 FROM table1 ORDER BY col1 NULLS FIRST;
--col1で降順にしてnull値を最後に表示する
SELECT id, col1, col2 FROM table1 ORDER BY col1 DESC NULLS LAST;
4. その他
null値を置換する方法はPostgreSQLとMySQLでnull値だった場合に置換する方法をまとめたを参照してください。