В этом учебном пособии вы узнаете, как использовать Oracle/PLSQL функцию LNNVL с синтаксисом и примерами.
Описание
Oracle/PLSQL функция LNNVL используется в предложении WHERE SQL запроса, чтобы оценить состояние, когда один из операндов может содержать значение NULL.
Синтаксис
Синтаксис Oracle/PLSQL функции LNNVL:
Примечание
Функция LNNVL будет возвращать в следующее:
Условие оценивается как | LNNVL вернет значение |
---|---|
TRUE | FALSE |
FALSE | TRUE |
UNKNOWN | TRUE |
Так что, если бы у нас было две колонки с называемые qty и reorder_level, где qty = 20 и reorder_level IS NULL, то функция LNNVL вернет следующее:
Условие | Условие оценивается как | LNNVL вернет значение |
---|---|---|
qty = reorder_level | UNKNOWN | TRUE |
qty IS NULL | FALSE | TRUE |
reorder_level IS NULL | TRUE | FALSE |
qty = 20 | TRUE | FALSE |
reorder_level = 20 | UNKNOWN | TRUE |
Применение
Функцию LNNVL можно использовать в следующих версиях Oracle/PLSQL:
- Oracle 12c, Oracle 11g, Oracle 10g
Пример
Функция LNNVL может быть использована в Oracle/PLSQL.
Давайте посмотрим пример. Если бы у нас была таблица products, содержащая следующие данные:
PRODUCT_ID | QTY | REORDER_LEVEL |
---|---|---|
1000 | 20 | NULL |
2000 | 15 | 8 |
3000 | 8 | 10 |
4000 | 12 | 6 |
5000 | 2 | 2 |
6000 | 4 | 5 |
И мы хотели найти все products (продукты), чьи QTY было ниже REORDER_LEVEL, запустим следующий SQL запрос:
1 2 3 |
SELECT * FROM products WHERE QTY < REORDER_LEVEL; |
Запрос вернет следующий результат:
PRODUCT_ID | QTY | REORDER_LEVEL |
---|---|---|
3000 | 8 | 10 |
6000 | 4 | 5 |
Однако, если бы мы хотели рассмотреть products, которые были бы ниже REORDER_LEVEL, а также REORDER_LEVEL имел значение NULL,то мы будем использовать функцию LNNVL следующим образом:
1 2 3 |
SELECT * FROM products WHERE LNNVL(QTY >= REORDER_LEVEL); |
Это вернет следующий результат:
PRODUCT_ID | QTY | REORDER_LEVEL |
---|---|---|
1000 | 20 | NULL |
3000 | 8 | 10 |
6000 | 4 | 5 |
В этом примере, результирующий набор также содержит product_id 1000, который имеет REORDER_LEVEL NULL.