SQL中 nvl()coalesce()decode()这三个函数是不是递进包含关系?

by_dn2022-10-04 11:39:541条回答

SQL中 nvl()coalesce()decode()这三个函数是不是递进包含关系?
比如:
select name,bonus from table where name='apple';
name bonus
----------------
apple 空 (我想让结果=0)
以下语句都对吗?如果有问题请指出,
1.select name,nvl(bonus,0) from table where name='apple';
2.select name,coalesce(bonus,0,1) from table where name='apple';
3.select name,coalesce(bonus,null,0) from table where name='apple';
4.select name,bonus,decode(name,‘apple’,0) from table where name='apple';

已提交,审核后显示!提交回复

共1条回复
paobaaijj 共回答了17个问题 | 采纳率94.1%
nvl(bonus,0) 意思是 如果 bonus is null ,那么返回 0,否则返回 bonus
coalesce(bonus,0,1) 意思是 返回 参数列表中,第一个非 空的数据.
也就是相当于,如果 bonus is null ,那么返回 0,否则返回 bonus.
这里的最后一个参数 1,目测是打酱油的.
coalesce(bonus,null,0) 意思是 返回 参数列表中,第一个非 空的数据.
也就是相当于,如果 bonus is null ,那么第2个参数还是 null,最后返回第3个参数 0
decode(name,‘apple’,0) 意思是,如果 name = 'apple' 那么返回 0
否则的话 ,就是返回 null 了.
1年前

相关推荐

oracle存储过程中带空值的输入怎么写?COALESCE()函数用错了吗?
oracle存储过程中带空值的输入怎么写?COALESCE()函数用错了吗?
(start_time in date,end_time in date,name in nvarchar2,tname in nvarchar2,cusers out sys_refcursor)
as

begin

open cusers for select * from C_USERS where logintime >= COALESCE(start_time,logintime)
and logintime
tony2008liu1年前1
nanjingxiaolang 共回答了16个问题 | 采纳率100%
空值 ,你直接用NVL不就行了.
open cusers for select * from C_USERS where logintime >= NVL(start_time,logintime)
and logintime