Oracle数据库知识——decode() 详解

语法:decode(条件,值1,返回值1,值2,返回值2,…值n,返回值n,缺省值)

语法解析:

IF 条件=值1 THEN
    RETURN(返回值1)
ELSIF 条件=值2 THEN
    RETURN(返回值2)
    ......
ELSIF 条件=值n THEN
    RETURN(返回值n)
ELSE
    RETURN(缺省值)
END IF

decode函数等价于cash when语句,只不过当条件比较多时,decode函数书写起来比较简洁一点而已

前期表准备:

 1.查询数据,sex字段 1表示男生,2表示女生

select t.id,
       t.name,
       t.age,
       decode(t.sex, '1', '男生' , '2', '女生', '其他') as sex
  from student_test t

 2.decode比较大小

备注:sign(value)函数会根据value的值为0,正数,负数,分别返回0,1,-1

需求:年龄在12岁以上的显示12以上,12以下的显示12以下,12的显示正好12

select t.id,
       t.name,
       t.age,
       decode(sign(t.age-12),1,'12以上',-1,'12以下',0,'正好12') as age_desc,
       t.sex
  from student_test t

需求:age在13以上的为高龄,11-13的为中龄,11以下的为低龄 

select t.id,
       t.name,
       t.age,
       decode(sign(t.age - 13),
              1,
              '高龄',
              0,
              '高龄',
              '-1',
              decode(sign(t.age - 11), 1, '中龄', 0, '中龄', -1, '低龄')) as age_desc,
       t.sex
  from student_test t

 

3.搜索字符串

需求:找到含有三的姓名

 select t.id,
         t.name,
         decode(instr(t.name, '三'), '0', '名字中不含三', '名字中含有三') nama_desc,
         t.age,
         t.sex
    from student_test t

 

需求:判断是否为空

表数据:

select t.id, 
       t.name, 
       t.age, 
       decode(t.sex, null, '暂无数据', t.sex) sex
       from student_test t

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值