【小凯猿记】Oracle 函数 decode()用法

Oracle 函数: decode()

英文翻译过来:解码, 简单来说可以理解为翻译字段。 翻译表中的数据也是它最常用的一种用法。下面为大家列举了decode的一些用法,供参考!
  1. 字段翻译

比如说:在一个学生表里,里面有性别字段,我们用0代表男生,1代表女生,大致数据如下:

IDNAMEAGESEX
1铁柱230
2翠花181

在实际设计数据库表的时候,往往有很多字段的值就是固定那么几个,所以为了节约资源等,往往都会用char(1)来代表各种含义。比如说公司里的岗位,性别等,
上面这个学生表里,我要想向用户显示的里面性别不要出现0,1这种,这是我们在设计层面考虑到存0,1会比较方便,节约了一定内存,但是在实际的业务中,显示肯定不能把简单的0,1这些显示出来,要把它的实际含义写出来。这里就可以用到decode()函数了:

select id,name,age,
	decode(sex,'0','男生','1','女生') as sex from student;
  • 这样显示出来的值,0会被男生代替,1则会被女生代替。

语法

  • 这里可以看出来decode的语法非常容易理解:decode(条件,值1,返回值1,值2,返回值2,返回值Last)
  • 稍微翻译一下就是:如果条件等于值1,那么显示的就是返回值1,以此类推直到匹配到对应的值,和 Java中的[Switch]类似。
  • 这里的值1与返回值1中间可以有任意对,最后返回值Last是当前面的值都不匹配时就返回这个。
    参数里面的值、返回值都可以是表达式
  1. 比较大小
    这里的话会比较常用到一个函数 sign(value),它会根据value的值正数、0、负数,分别返回1、0、-1.
    还是拿学生表为例子,我想要查询出来的数据多一列,小于18岁的为学生,大于等于18岁为青年。
select id,name,age,
	decode(sign(age-18),'1','青年','0','青年','-1','学生') as ages from student;
  • 有些资料中还会有另一个用法:分段。 其实分段和比较大小是异曲同工的。只是在不同的业务场景。比如学生的成绩,我们可以给成绩进行分段,从而给出优秀,良好等,这里同样也可以使用sign+decode结合的方式。

应用场景

在实际业务中,大多在视图【View】里用到decode的场景会很多。在工作中,真正涉及到一些复杂的业务,有些是需要考虑整个项目的设计,还有些是和数据打交道的,这个时候视图【View】和存储过程【procedure】就额外重要了。这个里面还可能会用到其它更多的函数,所以想要能够对视图、存储过程熟练, 基本的函数 是必不可少的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值