例如:n1和n2,想知道任何内置的oracle函数都可以实现吗?
样本条件和预期输出:
答案 0 :(得分:3)
检查:
case when n1 is not null and n2 is not null then
n1 + n2
else
COALESCE(n1,n2)
end
带有单个coalesce
COALESCE(n1+n2,n1,n2)
create table t as select 1 n1, 2 n2 from dual union all select null, 2 from dual union all select 1, null from dual union all select null, null from dual
4 rows affected
select COALESCE(n1+n2,n1,n2) from t
| COALESCE(N1+N2,N1,N2) | | --------------------: | | 3 | | 2 | | 1 | | null |
db <>提琴here
答案 1 :(得分:2)
可以结合使用CASE表达式和coalesce():
case
when n1 is null and n2 is null then null
else coalesce(n1, 0) + coalesce(n2, 0)
end as n1_n2_sum
答案 2 :(得分:2)
您可以尝试以下-
with data as (
select 1 X, 2 Y, 1 sno from dual
union
select null X, 2 Y, 2 sno from dual
union
select 1 X, null Y, 3 sno from dual
union
select null X, null Y, 4 sno from dual
)
select sno, X, Y, coalesce(X+Y,X,Y) from data
order by sno
+-----+--------+--------+-------------------+
| SNO | X | Y | COALESCE(X+Y,X,Y) |
+-----+--------+--------+-------------------+
| 1 | 1 | 2 | 3 |
| 2 | (null) | 2 | 2 |
| 3 | 1 | (null) | 1 |
| 4 | (null) | (null) | (null) |
+-----+--------+--------+-------------------+