Двухвариантная замена NULL-значения реальным значением
Функция
Двухвариантная замена неопределенного значения (NULL-значения) реальным значением.
Спецификация
::=
::=
::=
::=
Общие правила
-
Функция возвращает значение
< выражения2 >
в случае, если< выражение1 >
не является NULL-значением, иначе возвращает значение< выражения3 >
. -
Функция эквивалентна конструкции СУБД ЛИНТЕР:
CASE WHEN < выражение1 > IS NOT NULL THEN < выражение2 > ELSE < выражение3 > END;
-
Типы данных
< выражения1 >
,< выражения2 >
,< выражения3 >
должны быть идентичны или приводимыми. При приведении типов данных по умолчанию (без конструкции CAST…) второй и третий аргументы приводятся к типу данных первого аргумента. -
Аргументы могут быть заданы
< SQL-параметром >
, который должен содержать спецификацию типа данных параметра.select 'Скидка '+ nvl2(? (char(5)), '10%', 'не предоставляется'); 500 |Скидка 10% | select 'Скидка '+ nvl2(? (char(5)), '10%', 'Не предоставляется'); NULL |Скидка не предоставляется|
Пример
create or replace table tst (i int); insert into tst values (1), (null), (4), (10); Эти запросы эквивалентны: select case when i is not null then cast i*100 as char else 'Неопределено' end from tst; select nvl2(i,cast i*100 as char, 'Неопределено') from tst; |100 | |Неопределено| |400 | |1000 |