Базы данных: конспект лекций. Коллектив авторов

Чтение книги онлайн.

Читать онлайн книгу Базы данных: конспект лекций - Коллектив авторов страница 3

Базы данных: конспект лекций - Коллектив авторов

Скачать книгу

– сцепления строк);

      4) к операциям сравнения (<, ≤, ≠, ≥, >).

      Приведем примеры. В результате применений следующих операций будут получены Null-значения:

      3 + Null, 1/ Null, (Иванов' + '' + Null) ≔ Null

      Здесь вместо обычного равенства использована операция подстановки «≔» из-за особого характера работы с Null-значениями. Далее в подобных ситуациях также будет использоваться этот символ, который означает, что выражение справа от символа подстановки может заменить собой любое выражение из списка слева от символа подстановки.

      Характер Null-значений приводит к тому, что часто в некоторых выражениях вместо ожидаемого нуля получается Null-значение, например:

      (x – x), y * (x – x), x * 0 ≔ Null при x = Null.

      Все дело в том, что при подстановке, например, в выражение (x – x) значения x = Null, мы получаем выражение (Null – Null), и в силу вступает общее правило вычисления значения выражения, содержащего Null-значения, и информация о том, что здесь Null-значение соответствует одной и той же переменной теряется.

      Можно сделать вывод, что при вычислении любых операций, кроме логических, Null-значения интерпретируются как неприменимые, и поэтому в результате получается тоже Null-значение.

      К не менее неожиданным результатам приводит использование Null-значений в операциях сравнения. Например, в следующих выражениях также получаются Null-значения вместо ожидаемых логических значений True или False:

      (Null < Null); (Null Null); (Null = Null); (Null ≠ Null);

      (Null > Null); (Null ≥ Null) ≔ Null;

      Таким образом, делаем вывод, что нельзя говорить о том, что Null-значение равно или не равно самому себе. Каждое новое вхождение Null-значения рассматривается как независимое, и каждый раз Null-значения воспринимаются как различные неизвестные значения. Этим Null-значения кардинально отличаются от всех остальных типов данных, ведь мы знаем, что обо всех пройденных ранее величинах и их типах с уверенностью можно было говорить, что они равны или не равны друг другу.

      Итак, мы видим, что Null-значения не являются значениями переменных в обычном смысле этого слова. Поэтому становится невозможным сравнивать значения переменных или выражения, содержащие Null-значения, поскольку в результате мы будем получать не логические значения True или False, а Null-значения, как в следующих примерах:

      (x < Null); (x Null); (x = Null); (x ≠ Null); (x > Null);

      (x ≥ Null) ≔ Null;

      Поэтому по аналогии с пустыми значениями для проверки выражения на Null-значения необходимо использовать специальный предикат:

      IsNull (<выражение>), что буквально означает «есть Null».

      Логическая функция возвращает значение True, если в выражении присутствует Null или оно равно Null, и False – в противном случае, но никогда не возвращает значение Null. Предикат IsNull может применяться к переменным и выражению любого типа. Если применять его к выражениям пустого типа, предикат всегда будет возвращать False.

      Например:

      Итак, действительно, видим, что в первом случае, когда предикат IsNull взяли от нуля, на выходе получилось

Скачать книгу