В этом учебном пособии вы узнаете, как использовать 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.