SQLのORDER BYでNULLを先頭または末尾に配置する方法

この記事では、SQL(Structured Query Language)において、`ORDER BY`句を用いてNULL値を特定の位置(先頭または末尾)に配置する方法について詳しく説明します。具体的なコード例とその解説、応用例を含めています。

目次

はじめに:ORDER BYとは

`ORDER BY`はSQLにおいて、クエリの結果を特定のカラムに基づいてソートするための句です。通常、数字や文字列がソートされますが、NULL値が含まれるとどうなるのでしょうか。この記事ではその解決策を提供します。

ORDER BYでのNULLのデフォルト動作

通常、SQLの`ORDER BY`句ではNULL値は最小値として扱われ、`ASC(昇順)`でソートすると先頭に、`DESC(降順)`でソートすると末尾に来ます。

名前得点
山田90
鈴木80
佐藤NULL
デフォルトのソート動作

NULLを明示的にソートする方法

NULLを先頭にする方法

NULL値を明示的に先頭にソートしたい場合は、`IS NULL`条件とCASE文を組み合わせてソートを行うことができます。

SELECT * FROM スコア
ORDER BY
  CASE
    WHEN 得点 IS NULL THEN 1
    ELSE 0
  END, 得点 ASC;
名前得点
佐藤NULL
鈴木80
山田90
NULLを先頭にソートした結果

NULLを末尾にする方法

同様に、NULL値を明示的に末尾にソートする場合もCASE文を使います。

SELECT * FROM スコア
ORDER BY
  CASE
    WHEN 得点 IS NULL THEN 1
    ELSE 0
  END, 得点 DESC;
名前得点
山田90
鈴木80
佐藤NULL
NULLを末尾にソートした結果

まとめ

SQLの`ORDER BY`句を用いる際のNULL値の扱いには注意が必要です。CASE文を使うことで、NULL値を明示的に先頭または末尾に配置することができます。この記事で解説した手法を活用して、より柔軟なデータソートを行ってみてください。

コメント

コメントする

目次