【実例有り】NULLを含んだデータのソート

データベース

NULLを含んだデータの場合、ソート結果はどうなるでしょうか。
ソート結果を予想しながら読んでみてください。

サンプルデータ

次のテーブルを使用します。

-- 価格表を作成
create table prices (
 id varchar2(3) not null,
 name varchar2(20),
 price number(5)
);

-- 初期データを投入
insert into prices values ('1','りんご',120);
insert into prices values ('2','苺',NULL);
insert into prices values ('3','柿',110);
insert into prices values ('4','梨',NULL);
insert into prices values ('5','バナナ',185);
idnameprice
1りんご120
2(NULL)
3110
4(NULL)
5バナナ185
初期データ投入後のpricesテーブル

NULLデータを含むカラム[price]でソートしてみましょう。

昇順でソートした場合

select * from prices order by price asc;
idnameprice
3110
1りんご120
5バナナ185
2(NULL)
4(NULL)
価格→NULLの順に並ぶ

NULLは一番大きい値と見なされるため、後半に並びます。
NULLを最初に取り出したい場合は、次のようにします。

select * from prices order by price asc NULLS FIRST;
idnameprice
4(NULL)
2(NULL)
3110
1りんご120
5バナナ185
NULL→価格の順に並ぶ

降順でソートした場合

select * from prices order by price desc;
idnameprice
2(NULL)
4(NULL)
5バナナ185
1りんご120
3110
NULL→価格の順に並ぶ

NULLを最後に取り出したい場合は、次のようにします。

select * from prices order by price desc NULLS LAST;
idnameprice
5バナナ185
1りんご120
3110
4(NULL)
2(NULL)
価格→NULLの順に並ぶ

参考:実行環境

Oracle Database 19c
https://livesql.oracle.com
※オラクル社が公開しているWebアプリ。
 OracleのSQLを実行可能で、無料!

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