Книга знаний

1С:Предприятие / v8 / Приемы программирования / Запросы

v8: Значения NULL

Автор статьи: Волшебник | Редакторы: Попытка1С
Последняя редакция №2 от 25.02.08 | История
URL: http://kb.mista.ru/article.php?id=144

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
Закладка

Описание | Рубрикатор | Поиск | ТелепатБот | Захваченные статьи | Установки | Форум
© Станислав Митичкин (Волшебник), 2005-2011 | Mista.ru

Яндекс.Метрика