Использование значений NULL в Visual FoxPro

В этой статье описывается использование значений данных NULL в командах и функциях Visual FoxPro.

Исходная версия продукта: Visual FoxPro
Исходный номер базы знаний: 130307

Сводка

Visual FoxPro версии 3.0 поддерживает значения данных NULL. Версии FoxPro до версии 3.0 не поддерживали значения данных NULL напрямую. В этой статье описаны общие правила, которые следует Visual FoxPro для обработки значений NULL (представленных как .NULL.), когда они передаются командам или функциям Visual FoxPro.

Дополнительная информация

Используйте значение NULL (.NULL.), если значение отсутствует, не имеет значения или неизвестно. В предыдущих версиях FoxPro значения, которые были неизвестны или отсутствуют, были представлены пробелами или нулями, которые могли быть неправильно интерпретированы. С помощью Visual FoxPro теперь можно хранить значение NULL в поле.

Важно отметить, что значение NULL (.NULL.) в Visual FoxPro не совпадает с пустым, пустым или нулевым значением. Null представляет отсутствие значения, поэтому значение NULL никогда не равно, больше или меньше другого значения, null или не равно NULL. Поддержка значений NULL в Visual FoxPro соответствует стандартам ANSI и влияет на любую область продукта, в которой используются значения и выражения.

Общие правила для значений NULL

Ниже приведены общие правила для значений NULL, передаваемых командам или функциям Visual FoxPro:

  • Команды создают ошибку при передаче значения NULL.

  • Функции, принимаюющие значения NULL, возвращаются .NULL. в результате.

  • Функции, ожидающие числовое значение, создают ошибку, если задано значение NULL.

  • ISBLANK(), ISDIGIT(), ISLOWER(), ISUPPER()ISALPHA(), и EMPTY() каждый возвращает значение false (.F.) при передаче значения NULL.

  • ISNULL() возвращает значение true (.T.) при передаче значения NULL.

  • Команды INSERT SQL и SELECT SQL обрабатывают значения NULL с помощью предложений IS NULL и IS NOT NULL.

  • Агрегатные функции SQL, такие как MAX(), MIN()и SUM() игнорируют все значения NULL в агрегате.

  • Агрегатные функции Visual FoxPro распространяются .NULL. , если все предоставленные значения являются значениями NULL, в противном случае любое значение NULL игнорируется.

В оставшейся части этой статьи приводятся дополнительные сведения и примеры для этих общих правил.

Команды создают ошибку при передаче значения NULL.

Команда Visual FoxPro — это инструкция, которая приводит к действию. Примерами команд являются USE, BROWSEи DELETE. Например, USE команда возвращает ошибку для этого кода:

STORE .NULL. TO nWorkArea
USE mytable IN (nWorkArea)

Предложение USE IN команды ожидает числовое или альфа-значение, когда при передаче .NULL. создается ошибка Число таблицы "Недопустимый ".

Функция NVL() может использоваться для удаления значений NULL из вычислений или операций, где значения NULL не поддерживаются или не являются релевантными.

STORE .NULL. TO nWorkArea
USE mytable IN NVL(nWorkArea,0)

Это откроет mytable в первой доступной рабочей области. Дополнительные сведения о функции см. в файле справки NVL() или документации по Visual FoxPro.

Функции, принимаюющие значения NULL, возвращают . NULL. в результате

Функция Visual FoxPro — это подпрограмма, которая выполняет определенную задачу и принимает ноль или больше аргументов. Примеры функций: ISBLANK(), UPPER()и SUBSTR(). Большинство функций Visual FoxPro позволяют передавать значение NULL в качестве аргумента без создания ошибки, однако из функции возвращается значение ..NULL. Другими словами, при передаче значения NULL в функцию результат всегда имеет значение NULL. Это также способ обработки значений NULL в математических уравнениях. Например, значение NULL, добавленное к 500, равно NULL, а значение NULL, умноженное на ноль, равно NULL (не нулю).

В следующем примере кода возвращается .NULL.:

cLastName = "Johnson"
nBegin = 5
nExtract = .NULL.
?SUBSTR(cLastName,nBegin,nExtract)

Исключениями из этого правила являются ISBLANK()функции , ISDIGIT(), ISLOWER(), ISUPPER(), ISALPHA()и EMPTY() , каждая из которых возвращает .F. значение. Функция ISNULL() возвращает .T. значение.

INSERT SQL и SELECT SQL обрабатывают значения NULL с помощью новых предложений

Два новых предложения (IS NULL и IS NOT NULL) обрабатывают значения NULL в INSERT командах SQL и SELECT . Например, чтобы найти все записи в таблице, где cLastName не имеет значения NULL, используйте следующую команду:

SELECT cLastName FROM mytable WHERE cLastName IS NOT NULL

Чтобы найти значения NULL, используйте предложение IS NULL.

Агрегатные функции SQL игнорируют значения NULL

Агрегатная функция — это функция, которая выполняет числовые операции, такие как сложение, минимальное, максимальное или среднее для группы (агрегата) значений. Примерами агрегатных функций являются MAX(), MIN(), и SUM().

SELECT Например, команда SQL может использовать агрегатные функции для получения числовых значений из таблиц. Например, следующая SELECT команда возвращает максимальное значение из поля с именем nYTDSales:

SELECT MAX(nYTDSales) from mytable

Любая агрегатная функция SQL, выполняемая в поле, которое содержит .NULL. значения, игнорирует .NULL. значения, возвращая результат, который обрабатывает значения NULL так, как если бы они не существуют (не являются частью агрегата).

Дополнительные сведения о значении .NULL. и функциях, описанных выше, найдите разделы в файле справки Visual FoxPro.