ORDER BYでNULLのカラムをASCでソートした時に最後に表示する方法

SQLServerでNULL値を含む列をASC(昇順・小さいもの順)でソートした場合NULLを含む行は前にソートされます。

NULLを最後に持ってくるにはちょっとした工夫が必要になります。

スポンサーリンク

ORDER BYでNULLのカラムを最後に持ってくる

SQLで何も考慮せずに「ORDER BY」するとNULLのカラムは先頭に表示されます。

ちなみにOracleでORDER BYでNULLの列を後ろに持っていくには専用のオプションが用意されており

とすることでNULLを検索結果の最後に表示することができます。

でもSQLServerにはNULLS LASTオプションは定義されていないので、自力でなんとかするしかないです。

NULLの行は先頭に表示されるパターン

name age
次郎 NULL
一郎 10
三郎 30

NULLの行は最後に表示されるパターン

NULLを最後に持っていくには「CASE WHEN」を使って一工夫します。

name age
一郎 10
三郎 30
次郎 NULL

「CASE WHEN」でNULLの行を「1」に変換し、NULL以外を「0」に変換します。
これでNULLの行は後ろに行くのであとは当初の目的の
「age」でソートすれば欲しい結果を取得することができます。

まとめ

SQLserverではORDER BYでNULLのカラムをASCでソートした時に最後に表示するにはちょっとした一工夫が必要ですが、難しくはないので覚えておきましょう。

以上、ORDER BYでNULLのカラムをASCでソートした時に最後に表示するでした。

タイトルとURLをコピーしました