Якщо ваш двигун дозволяє ORDER BY x IS NULL, x
чи ORDER BY x NULLS LAST
використовувати це. Але якщо це не допоможе:
Якщо ви сортуєте за числовим типом, ви можете зробити це: (Запозичення схеми з іншої відповіді .)
SELECT *
FROM Employees
ORDER BY ISNULL(DepartmentId*0,1), DepartmentId;
Будь-яке ненулеве число стає 0, а нульове стає 1, яке впорядковує останні нулі.
Ви також можете зробити це для рядків:
SELECT *
FROM Employees
ORDER BY ISNULL(LEFT(LastName,0),'a'), LastName
Тому що 'a'
> ''
.
Це навіть працює з датами, примушуючи до нульового int та використовуючи метод для ints вище:
SELECT *
FROM Employees
ORDER BY ISNULL(CONVERT(INT, HireDate)*0, 1), HireDate
(Нехай робить вигляд, що схема має HireDate.)
За допомогою цих методів уникнути питання щодо необхідності створення або максимального керування значенням кожного типу або виправлення запитів, якщо тип даних (і максимум) змінюється (обидва питання, від яких страждають інші рішення ISNULL). Плюс вони набагато коротші, ніж СПРАВКА.