Wenn Ihr Motor dies zulässt ORDER BY x IS NULL, x
oder ORDER BY x NULLS LAST
verwendet. Wenn dies nicht der Fall ist, können diese helfen:
Wenn Sie nach einem numerischen Typ sortieren, können Sie Folgendes tun: (Ausleihen des Schemas aus einer anderen Antwort .)
SELECT *
FROM Employees
ORDER BY ISNULL(DepartmentId*0,1), DepartmentId;
Jede Nicht-Null-Zahl wird zu 0, und Nullen werden zu 1, wodurch die Nullen zuletzt sortiert werden.
Sie können dies auch für Zeichenfolgen tun:
SELECT *
FROM Employees
ORDER BY ISNULL(LEFT(LastName,0),'a'), LastName
Weil 'a'
> ''
.
Dies funktioniert sogar mit Datumsangaben, indem ein nullbares int erzwungen wird und die oben beschriebene Methode für Ints verwendet wird:
SELECT *
FROM Employees
ORDER BY ISNULL(CONVERT(INT, HireDate)*0, 1), HireDate
(Stellen wir uns vor, das Schema hat HireDate.)
Diese Methoden vermeiden das Problem, einen "Maximalwert" für jeden Typ erstellen oder verwalten zu müssen oder Abfragen zu korrigieren, wenn sich der Datentyp (und das Maximum) ändert (beide Probleme, unter denen andere ISNULL-Lösungen leiden). Außerdem sind sie viel kürzer als ein Fall.