トップページに戻る    次のSQLパズルへ    前のSQLパズルへ

10-255 nullを0としてソート

SQLパズル

numTable
 Val
----
  -1
null
   0
   1
   2
   3

nullを、0として昇順で出力する。
(nullは、0同士の中では、最小として扱います)

出力結果
 Val
----
  -1
null
   0
   1
   2
   3

こちらを参考にさせていただきました(英語)


データ作成スクリプト

create table numTable(Val) as
select   -1 from dual union
select null from dual union
select    0 from dual union
select    1 from dual union
select    2 from dual union
select    3 from dual;


SQL

--■■■sign関数を使う方法■■■
select Val
  from numTable
order by nvl(sign(Val),-0.5),Val;

--■■■sign関数を使わない方法■■■
select Val
  from numTable
order by nvl(Val,0),Val desc;


解説

sign関数を使う方法が分かりやすいと思いますねぇ