ORDER BYでのnullの取扱
ひっかかったのでメモ。
ID TEST -- ---- 1 100 2 3 3 null 4 40 SELECT * FROM table_name ORDER BY TEST ASC; ID TEST -- ---- 2 3 4 40 1 100 3 null nullは末尾に配置 SELECT * FROM table_name ORDER BY TEST DESC; ID TEST -- ---- 3 null nullは先頭に配置 1 100 4 40 2 3
OracleでNULL値を含む並び替えでは上記のようになる。
NULL値は、指定しなければ並び順では無限大と同じ振る舞いになるとのことです。
nullの並び順を指定したければ、下記のキーワードを使う。
SELECT * FROM table_name ORDER BY TEST ASC NULLS FIRST ID TEST -- ---- 3 null 2 3 4 40 1 100 SELECT * FROM table_name ORDER BY TEST DESC NULLS LAST ID TEST -- ---- 1 100 4 40 2 3 3 null NULLS LAST - 昇順のときのデフォルト NULLS FIRST - 降順のときのデフォルト