Поиск первого реального значения
Функция
Поиск в заданном списке значений первого реального (не NULL) значения.
Спецификация
< синтаксис >
::=
< выражениеn >
::=
Общие правила
-
Функция создана для совместимости с СУБД ORACLE.
-
Функция возвращает первое
< выражениеi >
из заданного списка, которое не является NULL-значением. Если список выражений содержит только NULL-значения, возвращается NULL-значение. Например:Var1 Var2 Var3 COALESCE (var1, var2, var3) 10 20 30 10 10 NULL 30 10 10 20 NULL 10 NULL 20 30 20 NULL NULL 30 30 NULL NULL NULL NULL -
Тип данных используемых выражений должен совпадать (при этом UNICODE и не UNICODE типы данных смешивать нельзя).
-
Аргументы могут быть заданы
< 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|нет|