twataの備忘録

仕事、読書、ガジェット、グルメ、写真、旅行など雑多な備忘

【SQL】【SQLServer】 Order by で NULLを最後に持ってくる

仕事でMicrosoftのSQLServerを使っているが、このSQLServer、資格で勉強したORACLEのSQLと細かい部分で違っている。

今日知ったのはOrder by句におけるNULLの扱い。 デフォルトではNULLが先頭にくる。ORACLEにはNULLを最後に持ってくるオプションがあったが、SQLServerのOrder by句にはそのようなオプションは無いらしい。

という訳で、Order by句に以下のCase文を加えるのが手っ取り早いようだ。

    case when [列名] is null then 0 else 1 end desc

使うとすれば、こんな感じ。

 Select
     *
 From
     SYOHIN
 Order By
     case when PRICE is null then 0 else 1 end desc
    ,PRICE

こうすれば、PRICEという列の値を昇順でかつ、NULLを最後に並べることが出来る。