【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を最後に並べることが出来る。