Нулевой оракул, что это такое
Обновлено: 21.11.2024
В этом руководстве по Oracle объясняется, как использовать условие Oracle IS NOT NULL с синтаксисом и примерами.
Описание
Условие Oracle IS NOT NULL используется для проверки значения NOT NULL. Вы можете использовать условие Oracle IS NOT NULL либо в операторе SQL, либо в блоке кода PLSQL.
Синтаксис
Синтаксис условия IS NOT NULL в Oracle/PLSQL:
Параметры или аргументы
- Если выражение НЕ является значением NULL, условие оценивается как ИСТИНА.
- Если выражение имеет значение NULL, условие оценивается как FALSE.
Пример — с оператором SELECT
Вот пример использования условия Oracle IS NOT NULL в операторе SELECT:
В этом примере Oracle IS NOT NULL будут возвращены все записи из таблицы customers, где customer_name не содержит нулевого значения.
Пример — с оператором INSERT
Вот пример использования условия Oracle IS NOT NULL в операторе INSERT:
Этот пример Oracle IS NOT NULL будет вставлять записи в таблицу suppliers, где account_no не содержит нулевое значение в таблице customers .
Пример — с оператором UPDATE
Вот пример использования условия Oracle IS NOT NULL в операторе UPDATE:
В этом примере Oracle IS NOT NULL будут обновлены записи в таблице customers, где customer_name не содержит пустого значения.
Пример — с оператором DELETE
Вот пример использования условия Oracle IS NOT NULL в операторе DELETE:
В этом примере Oracle IS NOT NULL будут удалены все записи из таблицы customers, где статус не содержит нулевого значения.
Пример — использование кода PLSQL
Вы можете использовать условие Oracle IS NOT NULL в PLSQL, чтобы проверить, не является ли значение нулевым.
Если Lvalue не содержит пустого значения, выражение "ЕСЛИ" будет оцениваться как ИСТИНА.
Если столбец в строке не имеет значения, считается, что столбец имеет значение null или содержит значение null. Пустые значения могут появляться в столбцах любого типа данных, которые не ограничены ограничениями целостности NOT NULL или PRIMARY KEY. Используйте нулевое значение, если фактическое значение неизвестно или значение не имеет смысла.
База данных Oracle обрабатывает символьное значение нулевой длины как пустое. Однако не используйте null для представления нулевого числового значения, поскольку они не эквивалентны.
В настоящее время база данных Oracle обрабатывает символьное значение нулевой длины как пустое. Однако это может измениться в будущих выпусках, и Oracle рекомендует не обрабатывать пустые строки так же, как пустые значения.
Любое арифметическое выражение, содержащее нулевое значение, всегда дает нулевое значение. Например, нуль, добавленный к 10, равен нулю. На самом деле все операторы (кроме конкатенации) возвращают значение null, если им задан нулевой операнд.
Нулевые значения в функциях SQL
Информацию об обработке пустых значений в функциях SQL см. в разделе Пустые значения в функциях SQL.
Нулевые значения с условиями сравнения
Чтобы проверить наличие нулей, используйте только условия сравнения IS NULL и IS NOT NULL . Если вы используете любое другое условие с нулевыми значениями, и результат зависит от значения нулевого значения, тогда результатом будет UNKNOWN. Поскольку значение null представляет собой отсутствие данных, значение null не может быть равным или не равным какому-либо значению или другому значению null. Однако Oracle считает, что два нуля равны при оценке функции DECODE. Обратитесь к разделу DECODE за синтаксисом и дополнительной информацией.
Oracle также считает два нулевых значения равными, если они встречаются в составных ключах. То есть Oracle считает два составных ключа, содержащих значения NULL, идентичными, если все компоненты ключей, отличные от NULL, равны.
Нулевые значения в условиях
Условие, оцениваемое как UNKNOWN, действует почти как FALSE . Например, инструкция SELECT с условием в предложении WHERE, результатом которого является UNKNOWN, не возвращает строк. Однако условие, оцениваемое как UNKNOWN, отличается от FALSE тем, что дальнейшие операции по оценке условия UNKNOWN будут оцениваться как UNKNOWN. Таким образом, NOT FALSE оценивается как TRUE , а NOT UNKNOWN оценивается как UNKNOWN .
Таблица 2-22 показывает примеры различных вычислений, включающих пустые значения в условиях. Если в предложении WHERE оператора SELECT использовались условия, оценивающие значение UNKNOWN, то для этого запроса не будут возвращены строки.
Если столбец в строке не имеет значения, считается, что столбец имеет значение null или содержит значение null. Пустые значения могут появляться в столбцах любого типа данных, которые не ограничены ограничениями целостности NOT NULL или PRIMARY KEY. Используйте нулевое значение, если фактическое значение неизвестно или значение не имеет смысла.
Не используйте null для представления нулевого значения, поскольку они не эквивалентны.
В настоящее время база данных Oracle обрабатывает символьное значение нулевой длины как пустое.Однако это может измениться в будущих выпусках, и Oracle рекомендует не обрабатывать пустые строки так же, как пустые значения.
Любое арифметическое выражение, содержащее нулевое значение, всегда дает нулевое значение. Например, нуль, добавленный к 10, равен нулю. На самом деле все операторы (кроме конкатенации) возвращают значение null, если им задан нулевой операнд.
Нулевые значения в функциях SQL
Все скалярные функции (кроме REPLACE , NVL и CONCAT ) возвращают значение null, если им задан нулевой аргумент. Вы можете использовать функцию NVL, чтобы вернуть значение, когда возникает ноль. Например, выражение NVL(commission_pct,0) возвращает 0, если Commission_pct имеет значение null, или значение Commission_pct, если оно не равно null.
Большинство агрегатных функций игнорируют пустые значения. Например, рассмотрим запрос, который усредняет пять значений 1000, null, null, null и 2000. Такой запрос игнорирует значения NULL и вычисляет среднее значение как (1000+2000)/2 = 1500.
Нулевые значения с условиями сравнения
Чтобы проверить наличие нулей, используйте только условия сравнения IS NULL и IS NOT NULL . Если вы используете любое другое условие с нулевыми значениями, и результат зависит от значения нулевого значения, тогда результатом будет UNKNOWN. Поскольку значение null представляет собой отсутствие данных, значение null не может быть равным или не равным какому-либо значению или другому значению null. Однако Oracle считает, что два нуля равны при оценке функции DECODE. См. синтаксис и дополнительную информацию в разделе DECODE.
Oracle также считает два нулевых значения равными, если они встречаются в составных ключах. То есть Oracle считает два составных ключа, содержащих значения NULL, идентичными, если все компоненты ключей, отличные от NULL, равны.
Нулевые значения в условиях
Условие, оцениваемое как UNKNOWN, действует почти как FALSE . Например, инструкция SELECT с условием в предложении WHERE, результатом которого является UNKNOWN, не возвращает строк. Однако условие, оцениваемое как UNKNOWN, отличается от FALSE тем, что дальнейшие операции по оценке условия UNKNOWN будут оцениваться как UNKNOWN. Таким образом, NOT FALSE оценивается как TRUE , а NOT UNKNOWN оценивается как UNKNOWN .
В табл. 2-20 показаны примеры различных вычислений, включающих значения NULL в условиях. Если в предложении WHERE оператора SELECT использовались условия, оценивающие значение UNKNOWN, то для этого запроса не будут возвращены строки.
Вывод: в этом руководстве вы узнаете, как использовать операторы Oracle IS NULL и IS NOT NULL для проверки того, является ли значение в столбце или выражении равным NULL или нет.
Введение в оператор Oracle IS NULL
В мире баз данных значение NULL имеет особое значение. Это маркер отсутствия информации или информации, которая не применима.
NULL является особенным в том смысле, что это не такое значение, как число, строка символов или дата и время, поэтому его нельзя сравнивать ни с какими другими значениями, такими как ноль (0) или пустая строка (”). Вообще говоря, NULL даже не равен NULL.
Давайте посмотрим на таблицу заказов из примера базы данных.
В столбце salesman_id хранится идентификатор продавца, ответственного за заказ на продажу.
Следующий оператор SELECT пытается вернуть все заказы на продажу, в которых нет ответственного продавца:
Возвращает пустую строку.
Запрос использует оператор сравнения ( = ) для сравнения значений из столбца salesman_id с NULL , что неверно.
Чтобы проверить, является ли значение NULL или нет, следует использовать оператор IS NULL следующим образом:
Операция IS NULL возвращает значение true, если выражение или столбец имеют значение NULL. В противном случае возвращается false.
Следующий запрос возвращает все заказы на продажу, в которых нет ответственного продавца:
Вот частичный вывод запроса:
Оператор Oracle IS NOT NULL
Чтобы отменить оператор IS NULL, используйте оператор IS NOT NULL следующим образом:
Операция IS NOT NULL возвращает значение true, если выражение или значение в столбце не равно нулю. В противном случае возвращается false.
Например, в следующем примере возвращаются все заказы на продажу, в которых есть ответственный продавец:
На этом рисунке показан частичный вывод:
В этом руководстве вы узнали, как использовать Oracle IS NULL и IS NOT NULL, чтобы проверить, является ли выражение или значение в столбце нулевым или нет.
Читайте также: