Jika mesin Anda memungkinkan ORDER BY x IS NULL, x
atau ORDER BY x NULLS LAST
menggunakannya. Tetapi jika tidak, ini mungkin membantu:
Jika Anda mengurutkan berdasarkan tipe numerik, Anda dapat melakukan ini: (Meminjam skema dari jawaban lain .)
SELECT *
FROM Employees
ORDER BY ISNULL(DepartmentId*0,1), DepartmentId;
Setiap angka yang bukan nol menjadi 0, dan nol menjadi 1, yang merupakan jenis nol yang terakhir.
Anda juga dapat melakukan ini untuk string:
SELECT *
FROM Employees
ORDER BY ISNULL(LEFT(LastName,0),'a'), LastName
Karena 'a'
> ''
.
Ini bahkan bekerja dengan tanggal dengan memaksa ke int nullable dan menggunakan metode untuk int di atas:
SELECT *
FROM Employees
ORDER BY ISNULL(CONVERT(INT, HireDate)*0, 1), HireDate
(Mari kita berpura-pura skema memiliki HireDate.)
Metode ini menghindari masalah harus datang dengan atau mengelola nilai "maksimum" dari setiap jenis atau memperbaiki kueri jika tipe data (dan maksimum) berubah (kedua masalah yang diderita oleh solusi ISNULL lain). Plus mereka jauh lebih pendek daripada KASUS.