Oracle通用函数和条件函数

本文详细介绍了SQL中的nullif、coalesce及decode函数的使用方法,并通过具体示例展示了这些函数如何帮助处理空值和条件判断等问题。
--语法: nullif(表达式1,表达式2)
select nullif(2+2,4) from dual;--返回空
select nullif('ABC','ABC') from dual;--返回空
select nullif('你好','你好') from dual;--返回空
--由上可知,表达式1和表达式2相等,返回值为空

select nullif(2+3,4) from dual;--返回5
select nullif('ABC','efg') from dual;--返回abc
select nullif('你好','嗨') from dual;--返回你好
--由上可知,表达式1和表达式2不相等,则返回表达式1中的值

select nullif(null,4) from dual;--报错,数据类型不一致
select nullif(4,null) from dual;--返回4
--表达式1和表达式2应该是相同数据类型或能隐含转换成相同数据类型,
--表达式1不能用字符null
select nullif(null,null) from dual;


--语法:coalesce (e1, e2...en)

select coalesce(4) from dual;--报错,参数不够
select coalesce(4,5) from dual;--返回4
select coalesce(4,5,6) from dual;--返回4
select coalesce(null,5,6) from dual;--返回5
select coalesce(null,null,6) from dual;--返回6
select coalesce(null,null,null) from dual;--返回null
--由上可知,必须指定最少两个参数,不然会报错
--如果所有的参数都是null,则返回null。

--语法:decode(表达式,(参数列表)x1,y1,...,xn,yn,default值)
--语法:decode(表达式,(参数列表)x1,y1,...,xn,yn)


--基本形式 decode(表达式1,(成对出现的参数)表达式2,返回值2,表达式3,返回值3,匹配时单独剩下一个,当做默认值)
select decode(4,5,4) from dual;--当表达式1不等于表达式2,返回空(没有默认值)
select decode(4,4,5) from dual;--当表达式1等于表达式2,返回返回值2,返回5
select decode(4,4,5,6) from dual;--返回5
select decode(4,5,4,6) from dual;--返回6
select decode(4,5,4,4,8,6) from dual;--返回8
--由上可知,表达式只与参数列表左边(xn)作匹配,
--匹配成功,则返回参数列表右边(yn)的值
--匹配失败,则返回后面的default值
--如果后面没有定义default值,则返回null。

--Case xxx when  A  then  somethingA  when  B then  somethingB  else   somethingE end

create table chenxulin(
     name varchar2(10),
     sex varchar2(4)
);

select name,sex from chenxulin;
--像switch
SELECT NAME,
       sex,
       (CASE sex
         WHEN '1' THEN
          '男'
         WHEN '2' THEN
          '女'
         ELSE
          '嬲'
       END)
  FROM chenxulin;
--像if elseif else
SELECT ename,
       sal,
       (CASE 
         WHEN sal>=2000 THEN
          '土豪'
         WHEN sal>=1000 THEN
          '屌丝'
         ELSE
          '乞丐'
       END) 财产
  FROM emp;



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值