この記事では、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値を明示的に末尾にソートする場合もCASE文を使います。
SELECT * FROM スコア
ORDER BY
CASE
WHEN 得点 IS NULL THEN 1
ELSE 0
END, 得点 DESC;
名前 | 得点 |
---|---|
山田 | 90 |
鈴木 | 80 |
佐藤 | NULL |
まとめ
SQLの`ORDER BY`句を用いる際のNULL値の扱いには注意が必要です。CASE文を使うことで、NULL値を明示的に先頭または末尾に配置することができます。この記事で解説した手法を活用して、より柔軟なデータソートを行ってみてください。
created by Rinker
¥4,554
(2024/11/22 10:55:01時点 Amazon調べ-詳細)
コメント