分别介绍ORACLE中NVL/NVL2/DECODE/CASEWHEN的用法

使用nvl的时候只能对值进行是否为空的判断,基本语法是nvl( 值1, ,结果2)。它的功能是如果值1为空,则此函数返回结果2,不为空的话直接输出值1(如果两个参数都为空,那么还是返回空);

nvl2我理解为nvl的升级版,基本语法是nvl2(值1,结果3,结果2),多了一个结果3在中间,功能是当值1不为空的时候,此函数返回结果3,如果写成nvl2(值1,结果1,结果2),那么效果就等同于nvl(值1,结果2)了;

decode函数再次升级,基本表达式decode(值1,条件1,结果1,条件2,结果2,条件n,结果n…..,值x)。它的功能是当值1等于条件1的时候,输出结果1,等于条件2的时候,输出结果2,等于条件n的时候,输出结果n,所有条件值都不等的时候,输出值x。

case when 基本功能与decode相似,不过比decode有着更复杂的条件判断,基本语法(case when 值1=条件1 then 结果1,case when 值2=条件2 then 结果2,case when 值n=条件n then 结果n….else 结果x end ),与decode不同的是,其中的条件值1=条件1可以改成其他判断条件,比如>=,<,<=,<>,is null,is not null 等的判断。

以我个人的见解是,能用nvl就不用nvl2,能用nvl2就不用decode,能用decode就不用case when。

(0)
上一篇 2022年3月22日
下一篇 2022年3月22日

相关推荐