Поиск в заданном списке значений первого реального (не NULL) значения.
::=
::=
Функция создана для совместимости с СУБД 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|нет|