読者です 読者をやめる 読者になる 読者になる

SQL Server - ORDER BY 句で null は最小値扱い

当たり前のことのようにそんなもんだと思っていたのですが、あらためて MSDN を読んでいるとちゃんと記述があったのでメモ。

ORDER BY 句 (Transact-SQL)

引数の ASC | DESC のところを引用しておきます。

ASC | DESC

指定した列の値を昇順と降順のどちらで並べ替えるかを指定します。 ASC を指定した場合、最小値から最大値の順序で並べ替えられ ます。 DESC を指定した場合、最大値から最小値の順序で並べ替えられます。 ASC が既定の並べ替え順序です。 NULL 値は最小値として扱われます。

一応お試しクエリ。

select *
from (values
        (1),
        (3),
        (-2147483648), -- intの最小値
        (null),
        (0),
        (-1)
    ) as Temp(Value)
order by Value;

/*
Value
-----------
NULL
-2147483648
-1
0
1
3
*/