个人理解sql语句:NVL()用法和decode 函数

本文详细介绍了Oracle SQL中的NVL和NVL2函数,用于处理空值情况,以及DECODE函数,用于条件判断。NVL函数将NULL转换为指定值,NVL2提供更复杂的条件判断,而DECODE则类似于多条件的IF语句。

 

一、NVL函数是一个空值转换函数

1、NVL(表达式1,表达式2)

如果表达式1为空值,NVL返回值为表达式2的值,否则返回表达式1的值。 该函数的目的是把一个空值(null)转换成一个实际的值。其表达式的值可以是数字型、字符型和日期型。但是表达式1和表达式2的数据类型必须为同一个类型。

对数字型: NVL( comm,0);

对字符型 NVL( TO_CHAR(comm), 'No Commission')

对日期型 NVL(hiredate,' 31-DEC-99')

例子:

select   ename,NVL(TO_char(comm), ename||' is not a salesperson!') AS COMMISSION

from emp

2、NVL2(表达式1,表达式2,表达式3)

如果表达式1为空,返回值为表达式3的值。如果表达式1不为空,返回值为表达式2的值。

例如 NVL2(comm,'sal+comm',sal)

NVL2函数测试comm

如果comm为空,就返回sal 的值。如果 comm 不为空(null),就返回表达式 sal+comm的值。

二、decode 函数基本语法:

decode(字段|表达式,条件1,结果1,条件2,结果2,...,条件n,结果n,缺省值);
--缺省值可以省略

 表示如果 字段|表达式 等于 条件1 时,DECODE函数的结果返回 条件1 ,...,如果不等于任何一个条件值,则返回缺省值。
【注意】:decode 函数 ,只能在select 语句用。

举个简单例子:

decode(t.status,1,'1',2,'2')对应if t.status=1 { 1 }else if(t.status=2){2}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值