Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VisualFoxPro.doc
Скачиваний:
15
Добавлен:
01.07.2025
Размер:
11 Мб
Скачать
☆

3.1.4. Null-величины

3.1.4.1. Понятие null

VFP поддерживает NULL-значения. Это помогает при представлении неизвестных величин и упрощает взаимодействие с другими приложениями, например такими, как Microsoft Access или SQL-СУБД, в которых, как известно, может присутствовать NULL.

NULL – это отсутствие какого-либо значения. NULL – это не нуль и не пустая строка, и не чистое поле. При возрастающей сортировке NULL размещается впереди иных данных.

Для обозначения NULL-величины можно использовать как NULL, так и .NULL. Регистр букв может быть любым.

Поле таблицы, принимающее NULL, интерактивно устанавливается в NULL при нажатии на CTRL+0.

3.1.4.2. Функции и команда для null

Функция

ISNULL(eExpression)

возвращает .T., если выражение eExpression вычисляется как NULL, или .F. – в противном случае.

Использование операции отношения "=" для определения NULL непригодно.

Пример:

someVar = .NULL. && или someVar = NULL

? someVar && Напечатает: .NULL.

? IsNull(someVar) && Напечатает: .T.

? someVar = .NULL. && Напечатает: .NULL.

? Type("someVar") && Напечатает: L

? VarType(someVar) && Напечатает: X

Переменная, получив NULL, не изменяет своего типа, например:

store 5 to someVar

? VarType(someVar) && Напечатает: N

store .NULL. to someVar

? VarType(someVar, .T.) && Напечатает: N

Функция

NVL(eExpression1, eExpression2)

возвращает не NULL-значение одного из двух выражений: функция вернет eExpression2, если eExpression1 вычисляется как NULL; вернет eExpression1, если этот параметр отличен от NULL; вернет NULL, если оба параметра вычисляются со значением NULL.

Тип результата зависит от типа операндов и может быть Character, Date, DateTime, Numeric, Currency, Logical или NULL.

Функция используется для удаления NULL-значений из выражений, в которых NULL-значения недопустимы или неуместны.

Пример:

store .NULL. to glMyNull

clear

? Nvl(.T., glMyNull) && Напечатает: .T.

? Nvl(glMyNull, glMyNull) && Напечатает: .NULL.

Команда

SET NULL ON | OFF

задает способ поддержки NULL-значений командами ALTER TABLE, CREATE TABLE и INSERT – SQL.

Опции:

ON – указывает, что все поля таблицы, созданные ALTER TABLE и CREATE TABLE, поддерживают NULL-значения. Впоследствии от поддержки NULL можно отказаться, сбросив в проектировщике таблицы флажок NULL в строке с определением поля.

Также опция ON задает, что INSERT – SQL будет пытаться вставить NULL-значения в поля таблицы, не указанные в списке полей команды. Такая попытка будет удачна, если поле поддерживает NULL.

Замечание. Если для хотя бы одного поля таблицы задана поддержка NULL, то общее число допустимых полей таблицы снизится с 255 до 254.

OFF – (по умолчанию) указывает, что все поля, созданные ALTER TABLE и CREATE TABLE, не поддерживают NULL. Впоследствии поддержку NULL можно задать, установив для соответствующего поля флажок NULL.

Команда INSERT – SQL будет вставлять чистые значения в поля таблицы, не указанные в списке полей команды.

Установка SET NULL сохраняется с текущей сессией данных.

3.1.4.3. Null в логических выражениях

Поведение NULL в логических выражениях описывает табл. 3.5.

Таблица 3.5

Null в логических выражениях

Выражение

Результат, если x = .T.

Результат, если x = .F.

Результат, если x = .NULL.

x AND .NULL.

.NULL.

.F.

.NULL.

x OR .NULL.

.T.

.NULL.

.NULL.

NOT x

.F.

.T.

.NULL.

Если условие в опциях FOR, WHILE или WHERE вычисляется в NULL, то результат интерпретируется как .F.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]