Двухвариантная замена 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