Si votre moteur le permet ORDER BY x IS NULL, x
ou ORDER BY x NULLS LAST
utiliser cela. Mais si elle ne peut aider ces:
Si vous triez par un type numérique que vous pouvez faire ceci: (Empruntant le schéma de another answer.)
SELECT *
FROM Employees
ORDER BY ISNULL(DepartmentId*0,1), DepartmentId;
Tout non -null number devient 0, et null devient 1, ce qui trie les nulls en dernier.
Vous pouvez aussi le faire pour les chaînes:
SELECT *
FROM Employees
ORDER BY ISNULL(LEFT(LastName,0),'a'), LastName
Parce que 'a'
>''
.
Cela fonctionne même avec des dates en forçant à un int nullable et en utilisant la méthode de ints ci-dessus:
SELECT *
FROM Employees
ORDER BY ISNULL(CONVERT(INT, HireDate)*0, 1), HireDate
(Lets prétendre que le schéma a HireDate.)
Ces méthodes évitent la question d'avoir trouver ou gérer une valeur "maximum" de chaque type ou corriger des requêtes si le type de données (et le maximum) change (les deux problèmes que subissent les autres solutions ISNULL). De plus, ils sont beaucoup plus courts qu'un CAS.
double exact de http://stackoverflow.com/questions/151195/possible-to-use-sql-to-sort-by-date-but-put-null-dates-at-the-back -des-résultats –
Voir aussi http: // stackoverflow.com/questions/15121093/django-ajout-nulls-dernier-à-requête/35494930 # 35494930 et https://code.djangoproject.com/ticket/13312 – Risadinha