Двухвариантная замена NULL-значения реальным значением
Назначение
Двухвариантная замена неопределенного значения (NULL-значения) реальным значением.
Синтаксис
nvl2(< выражение 1 >, < выражение 2 >, < выражение 3 >)
< выражение 1 >
::=< значимое выражение >
< выражение 2 >
::=< значимое выражение >
< выражение 3 >
::=< значимое выражение >
Описание
Функция возвращает значение < выражения 2 >
в случае, если < выражение 1 >
не
является NULL-значением, иначе возвращает значение < выражения 3 >
.
Функция эквивалентна конструкции СУБД ЛИНТЕР:
CASE WHEN < выражение 1 > IS NOT NULL THEN < выражение 2 > ELSE < выражение 3 > END;
Типы данных < выражения 1 >
, < выражения 2 >
, < выражения 3 >
должны быть идентичными
или приводимыми. При приведении типов данных по умолчанию (без конструкции
CAST…) второй и третий аргументы приводятся к типу данных первого аргумента.
Пример
create or replace procedure nvl_test(in v char(20)) result char(20) code return nvl2(v, "is NOT NULL", "is NULL"); end; execute nvl_test(); return value = is NULL execute nvl_test('A'); return value = is NOT NULL