Работа с NULL-значениями в SQL
1) Подмена NULL-значений
Для замены NULL-значения на «реальное» значение предусмотрена функция COALESCE:
COALESCE (<выр1>[, <выр2>, …], <результат>)
Если <выр1> не NULL, то оно является результатом функции, иначе проверяется <выр2> и так далее. Если же все <выр1>, <выр2>, … равны NULL то возвращается <результат>.
2) Создание NULL-значений
Для создания NULL-значения предусмотрена функция NULLIF:
NULLIF (<выр>, <значение>)
Если <выр>=<значение>, то функция возвращает NULL, иначе <выр>, которое обычно является именем столбца, например NULLIF(1,1), всегда возвращает NULL.
Пример:
SELECT NULLIF (SNum, 1001), SName FROM SalesPeople
3) Особенности NULL-значений в предикатах сравнения
Если в предикате сравнения одно из сравниваемых значений равно NULL, то и результат сравнения равен NULL.
4) Особенности NULL-значений в предикате BETWEEN
• Если проверяемое значение или обе границы равны NULL, то результат UNKNOWN.
• Если верхняя граница равна NULL, то результат FALSE, если проверяемое значение меньше нижней границы и UNKNOWN иначе.
• Если нижняя граница равна NULL, то результат FALSE, если проверяемое значение больше верхней границы и UNKNOWN иначе.
5) Особенности NULL-значений в предикатах ANY|ALL
• Если сравниваемое значение не дает TRUE ни для одной строки и есть одна или несколько строк с NULL значениями, то ANY возвращает UNKNOWN.
• Если сравниваемое значение не дает FALSE ни для одной строки и есть одна или несколько строк с NULL значениями, то ALL возвращает UNKNOWN.