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 了。
我知道他们的区别,只是不知道单个字段判空的时候,他们的效率比较的顺序是?
SQL中 nvl()、coalesce()、decode()这三个函数,如果只是判断非空的话,哪一个效率相比较高?
答案:1 悬赏:0 手机版
解决时间 2021-01-29 19:39
- 提问者网友:佞臣
- 2021-01-29 09:41
最佳答案
- 五星知识达人网友:你哪知我潦倒为你
- 2021-01-29 10:13
nvl只支持2个参数,这是oracle特有的
coalesce支持不定参数,coalesce(bonus,0,1)应该写成coalesce(bonus,0),最后1个不用写,这是ansi标准函数,在多次外连接时尤其有用,譬如 t1 full join t2 on t1.id=t2.id full join t3 on coalesce(t1.id,t2.id)=t3.id full join t4 on coalesce(t1.id,t2.id,t3.id)=t4.id
decode判断不了非空
coalesce支持不定参数,coalesce(bonus,0,1)应该写成coalesce(bonus,0),最后1个不用写,这是ansi标准函数,在多次外连接时尤其有用,譬如 t1 full join t2 on t1.id=t2.id full join t3 on coalesce(t1.id,t2.id)=t3.id full join t4 on coalesce(t1.id,t2.id,t3.id)=t4.id
decode判断不了非空
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯