Motorunuz buna izin veriyorsa ORDER BY x IS NULL, x
veya ORDER BY x NULLS LAST
kullanıyorsa. Ancak, bunlar yardımcı olmazsa:
Sayısal bir türe göre sıralıyorsanız, bunu yapabilirsiniz: (Şemayı başka bir yanıttan ödünç almak .)
SELECT *
FROM Employees
ORDER BY ISNULL(DepartmentId*0,1), DepartmentId;
Null olmayan herhangi bir sayı 0 olur ve null değeri 1 olur ve bu null değerini en son sıralar.
Bunu dizeler için de yapabilirsiniz:
SELECT *
FROM Employees
ORDER BY ISNULL(LEFT(LastName,0),'a'), LastName
Çünkü 'a'
> ''
.
Bu, null olabilecek bir int'e zorlayarak ve yukarıdaki ints yöntemini kullanarak tarihlerle bile çalışır:
SELECT *
FROM Employees
ORDER BY ISNULL(CONVERT(INT, HireDate)*0, 1), HireDate
(Şemanın HireDate olduğunu varsayalım.)
Bu yöntemler, veri türü (ve maksimum) değiştiğinde (diğer ISNULL çözümlerinin yaşadığı her iki sorun) her türden "maksimum" değer bulmak veya yönetmek veya sorguları düzeltmek sorununu önler. Ayrıca bir VAKA'dan daha kısadırlar.