Oracle 查询函数进阶之decode()

Oracle 的 decode() 函数是PL/SQL中的一个强大工具,提供了一种简洁的方式来根据指定条件返回不同的值。它的工作原理类似于 case when then else end 结构,但更加简便。该函数可用于比较大小、字段格式化处理和行列转换等场景。例如,通过 decode() 函数可以将性别整型值转换为对应的字符,或者在比较两个字段大小时取较小值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. decode() 

    此函数是ORACLE PL/SQL是功能强大的函数之一,目前还只有ORACLE公司的SQL提供了此函数,其他数据库厂商的SQL实现还没有此功能。

    含义decode(表达式, 值1, 返回值1, 值2, 返回值2, ...值n, 返回值n, 缺省值)

    IF 表达式的结果 = 值1 
    返回 (返回值1)
   ELSE IF 表达式的结果 = 值2
    返回 (返回值2)
    ......
   ELSE IF 表达式的结果 = 值n
    返回 (返回值n)
   ELSE

    返回 (默认值)

   有点像是case when then else end 的用法,不过这个函数用起来更简单。

    用法:

     ① 比较大小

         -- 取较小值

         select decode(sign(字段1 - 字段2), -1, 返回值1, 返回值2) from dual; 

         sign函数说明:取数字n的符号,大于0返回1,小于0返回-1,等于0返回0(n可以是表达式,(n-200))

     ② 字段格式化处理

         select id, username, age, decode(sex,0,'男',1,'女') from users;

         在此场景下使用decode函数,将字段'sex'存储的整型值赋值为对应的字符。

    ③ 行列转换

         例:现有表student_score,表中数据如下:

 

序号姓名科目成绩
1宇峰语文96
2宇峰数学86
3宇峰英语76

执行SQL:select name, subject, score from student_score order by name;  获得如下数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值