NULL – отсутствующие значения. Не равны пробелу, пустой ссылке,
Неопределено.
NULL – типообразующее значение, т.е. существует тип NULL и единственное
значение этого типа. (аналогично Неопределено)
NULL значения появляются в запросе в следующих ситуациях:
Внешнее соединение, при котором не было найдено соответствующей
записи в другой таблице (при левом – во второй, при правом – в
первой, при полном – в обоих)
Обращение к реквизитам элементов, определенных только для группы
и наоборот.
Явно заданный литерал NULL в списке полей выборки (ВЫБРАТЬ)
Обращение к реквизитам для "битой" ссылки
Функция ЕСТЬNULL() предназначена для замены значения
NULL на другое значение.
Является свёрнутым ВЫБОР…КОНЕЦ, но ЕСТЬNULL предпочтительнее.
ЕСТЬNULL
(значение, РезультатЕслиNULL)
аналогично
следующему:
ВЫБОР
КОГДА Значение ЕСТЬ NULL ТОГДА РезультатЕслиNULL
ИНАЧЕ Значение
КОНЕЦ
ЕСТЬNULL отличается от ВЫБОР по следующим причинам:
При ЕСТЬNULL лучше читается запрос (проще)
При ЕСТЬNULL, если проверяется сложно выражение, то работает
быстрее, поскольку вычисляется один раз
При ЕСТЬNULL выражение замены приводится к типу проверяемого
выражения, если оно имеет тип Строка (длина) или Число (разрядность).
Нельзя проверять значения на NULL обычным равенством, потому что
в SQL действует трехзначная логика – Истина, Ложь, NULL, и результатом
такого сравнения будет UNKNOWN, что в 1С 8.0 аналогично ЛОЖЬ.
NULL <> 0, поэтому при левых внешних соединениях спр. Номенклатура
с таблицами остатков, цен, Контрагентов со взаиморасчетами при отсутствии
таких записей там будет NULL, который не равен 0. Лучшее решение
– ЕСТЬNULL