SQL中NVL()函数的⽤法
parameter数据类型
NVL() 函数简介
NVL函数的功能是实现空值的转换,根据第⼀个表达式的值是否为空值来返回相应的列名或表达式,主要⽤于对数据列上的空值进⾏处理,语法格式如:NVL( string1, replace_with)。
如果第⼀个参数的值为空值,则返回第⼆个参数的值,否则返回第⼀个参数的值。如果两个参数的值都为空值,则返回空值。该函数的⽬的是把⼀个空值(null)转换成⼀个实际的值,两个参数可以是任何类型的数据,如数字型、字符型和⽇期型,但两个参数的数据类型必须为同⼀个类型(或能够由Oracle隐式转换为相同的类型)。
--comm为需要判断是否为空的列名
数字型: NVL(comm,0);
字符型: NVL( TO_CHAR(comm), 'No Commission')
⽇期型: NVL(hiredate,' 31-DEC-99')
返回值类型可以为型、⽇期型、⽇期时间型、数值型、货币型、型或nul值,在不⽀持nul值或null值⽆关紧要的情况下,可以使⽤
NvL()函数来移去计算或操作中的nul值
注意事项
string1和replace_with必须为同⼀数据类型,除⾮显式的使⽤TO_CHAR函数。
例:NVL(TO_CHAR(numeric_column), 'some string') 其中numeric_column代指某个数字类型的值。
例:nvl(yanlei777,0) > 0,NVL(yanlei777, 0) 的意思是 如果 yanlei777 是NULL, 则取 0值
使⽤⽅法
通过查询获得某个字段的合计值,如果这个值为null将给出⼀个预设的默认值
例1:下⾯两⾏代码表⽰ 如果sum(t.dwxhl) = NULL 就返回 1
select nvl(sum(t.dwxhl),1)
from tb_jhde t
例2:这段代码是指可以把获得的合计值存储到变量 i 中,如果查询的值为 null 就把它的值设置为默认值 1
select nvl(sum(t.dwxhl),1) into i
from tb_jhde t
where zydm=-1
例3:在 Orac 中,如果记录中不存在 rulecode ='FWTD' 的数据,则查不出数据,代码实例如下
select nvl(rulescore,0) into rule_score from zwjc_graderule
where rulecode='FWTD';
--会报查不到数据的错
select nvl(sum(rulescore),0) from zwjc_graderule
where rulecode='FWTD';
例4:在 Orac 中,如果记录中不存在 rulecode ='FWTD' 的数据,以下这种写法是可以得到⼀⾏列名为 nvl(rulescore,0),值为0的数据
select nvl(sum(rulescore),0) from zwjc_graderule
where rulecode='FWTD';
--不会报错
select nvl(sum(rulescore),0) into rule_score from zwjc_graderule
where rulecode='FWTD';
NVL2 函数
是Oracle/PLSQL中的⼀个函数,Oracle 在NVL函数的功能上扩展,提供了NVL2函数。NVL2(表达式1,表达式2,表达式3):如果表达式1为空,返回值为表达式3的值;如果表达式1不为空,返回值为表达式2的值。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。