Поиск первого реального значения

Функция

Поиск в заданном списке значений первого реального (не NULL) значения.

Спецификация
 
< синтаксис >::=
< выражениеn >::=
Общие правила
  1. Функция создана для совместимости с СУБД ORACLE.

  2. Функция возвращает первое < выражениеi > из заданного списка, которое не является NULL-значением. Если список выражений содержит только NULL-значения, возвращается NULL-значение. Например:

    Var1Var2Var3COALESCE (var1, var2, var3)
    10203010
    10NULL3010
    1020NULL10
    NULL203020
    NULLNULL3030
    NULLNULLNULLNULL
  3. Тип данных используемых выражений должен совпадать (при этом UNICODE и не UNICODE типы данных смешивать нельзя).

  4. Аргументы могут быть заданы < SQL-параметром >, который должен содержать спецификацию типа данных параметра.

    select COALESCE(? (int), ? (int), ? (int));
    56
    -78
    NULL
    |         56|
Пример
Проверить, содержат ли записи таблицы реальные значения.
create or replace table tst (i1 int, i2 int, i3 int);
insert into tst (i1,i2,i3) values(null,null,null);
insert into tst (i1,i2,i3) values(null,null,3);
insert into tst (i1,i2,i3) values(null,2,3);
insert into tst (i1,i2,i3) values(1,2,null);
insert into tst (i1,i2,i3) values(1,null,3);
insert into tst (i1,i2,i3) values(1,2,3);
select i1, i2, i3, decode(COALESCE(i1,i2,i3), null, 'нет', 'да') from tst;

|   1|   2|   3|да |
|   1|NULL|   3|да |
|   1|   2|NULL|да |
|NULL|   2|   3|да |
|NULL|NULL|   3|да |
|NULL|NULL|NULL|нет|