首页 > 数据库 >Oracle之decode函数的使用

Oracle之decode函数的使用

时间:2024-02-02 19:00:11浏览次数:32  
标签:ENAME 函数 SAL 含有 sign decode DECODE Oracle

decode是Oracle公司独家提供的功能,它是一个功能很强的函数。它虽然不是SQL的标准,但对于性能非常有用。

decode函数的常用场景:

1、使用decode判断字符串或数值

decode(value,if1,then1,if2,then2,if3,then3,...,else)

sql含义为:

 IF 条件=值1 THEN
    RETURN(value 1)
ELS IF 条件=值2 THEN
    RETURN(value 2)
ELS IF 条件=值n THEN
    RETURN(value 3)
ELSE
    RETURN(default)
END IF

sql测试

当字段sex的值为1的时候就取值为男生,当值为0时取值为女生,否则其他值取值为其他;
(注意:后面的输出结果必须都是同一种类型)
select decode(sex,1,'男生',0,'女生','其他')
select decode(sex,'男生',1,'女生',0,-1)

2、使用decode联合sign()函数比较大小        

decode(sign(var1-var2),-1,var 1,var2)

介绍一下sign()函数的用法

sign()函数根据括号中的值是0、正数还是负数,分别返回0、1、-1

sql测试

select decode(sign(100-90),1,’100‘,-1,'90','相等')   --输出结果为100

3、使用decode函数分段

成绩大于90为优秀,成绩在80-90之间为良好,成绩在80之下为有待提升;

sql测试

select decode(sign(score-90),1,’优秀‘,0,'优秀',-1,decode(sign(score-80),1,'良好',0,'良好',-1,’有待提升‘))

4、利用decode实现表或者试图的行列转换

sql测试

SELECT
SUM(DECODE(ENAME,'SMITH',SAL,0)) SMITH,
SUM(DECODE(ENAME,'ALLEN',SAL,0)) ALLEN,
SUM(DECODE(ENAME,'WARD',SAL,0)) WARD,
SUM(DECODE(ENAME,'JONES',SAL,0)) JONES,
SUM(DECODE(ENAME,'MARTIN',SAL,0)) MARTIN FROM EMP

输出结果如下

SMITH ALLEN WARD JONES MARTIN
800  1600  1250  2975  1250

5、使用decode函数来使用表达式来搜索字符串

decode (expression, search_1, result_1, search_2, result_2, ...., search_n, result_n, default)

decode函数比较表达式和搜索字,如果匹配,返回结果1;如果不匹配,返回default值0;如果未定义default值,则返回空值。

sql测试

SELECT ENAME,SAL,DECODE(INSTR(ENAME, 'S'),0,'不含有s','含有s') AS INFO FROM EMP

输出结果如下

SMITH 800 含有s
ALLEN 1600 不含有s
WARD 1250 不含有s
JONES 2975 含有s
MARTIN 1250 不含有s
BLAKE 2850 不含有s
CLARK 2450 不含有s
SCOTT 3000 含有s
KING 5000 不含有s
TURNER 1500 不含有s
ADAMS 1100 含有s

 

标签:ENAME,函数,SAL,含有,sign,decode,DECODE,Oracle
From: https://www.cnblogs.com/lgx5/p/18003686

相关文章

  • 无涯教程-String.prototype.startsWith(searchString, position = 0)函数
    该方法确定字符串是否以指定的字符开头。String.prototype.startsWith-语法str.startsWith(searchString[,position])searchString  - 在此字符串开头要搜索的字符。position     - 该字符串中开始搜索searchString的位置;默认为0。String.prototype.s......
  • 【pytest】Hook钩子函数完整API总结
    pytest的钩子函数有很多,通过钩子函数的学习可以了解到pytest在执行用例的每个阶段做什么事情,也方便后续对pytest二次开发学习。详细文档可以查看pytest官方文档https://docs.pytest.org/en/latest/reference.html#hooks钩子函数总结第一部分:setuptools引导挂钩要求足够早注......
  • 【pytest进阶】pytest之hook函数
    什么是hook函数比如说你写了一个框架类的程序,你希望这个框架可以“被其他的代码注入”,即别人可以加入代码对你这个框架进行定制化,该如何做比较好?一种很常见的方式就是约定一个规则,框架初始化时会收集满足这个规则的所有代码(文件),然后把这些代码加入到框架中来,在执行时一并执行......
  • 无涯教程-toString()函数
    此方法返回表示指定对象的字符串。toString()-语法string.toString()toString()-返回值返回表示指定对象的字符串。toString()-示例varstr="Applesareround,andApplesareJuicy.";console.log(str.toString());运行上面代码输出Applesareround,an......
  • ‘utf-8’ codec can’t decode byte 0xe5 in position 1023: unexpected end of data
    使用pycharm在本地调试项目的时候,发现偶尔会出现下面的错误,导致项目无法继续执行下去。但是不适用debug模式,而使用运行模式的时候不会有这样的问题。E:\pycharm_pro\PyCharm2019.2.3\helpers\pydev\_pydevd_bundle\pydevd_comm.pyr=r.decode('utf-8')UnicodeDecodeError:......
  • 无涯教程-toLowerCase()函数
    此方法返回转换为小写的调用字符串值。toLowerCase()-语法string.toLowerCase()toLowerCase()-返回值返回转换为小写的调用字符串值。toLowerCase()-示例varstr="Applesareround,andApplesareJuicy.";console.log(str.toLowerCase())运行上面代码输......
  • 函数sigqueue
    一、函数sigqueuesigqueue函数原型:函数作用:新的发送信号系统调用,主要是针对实时信号提出的支持信号带有参数,与函数sigaction()配合使用intsigqueue(pid_tpid,intsigno,constunionsigvalvalue);分析:第一个参数:指定接收信号的进程id第二个参数:确定即将发送的信号第三个参......
  • Linux——信号处理函数sigaction()
    sigaction()作用:设置某信号的信号处理函数1.sigaction()函数原型#include<signal.h>intsigaction( intsigno, conststructsigaction*restrictact, structsigaction*restrictoldact );12345signo:指定的信号,可以为除SIGKILL及SIGSTOP外的任何信号act:信号处理方式......
  • 无涯教程-substring()函数
    此方法返回String对象的子集。substring()-语法string.substring(indexA,[indexB])indexA   - 小于字符串长度的0到1之间的整数。indexB   - (可选)0到字符串长度之间的整数。substring()-返回值substring方法根据给定的参数返回新的子字符......
  • 无涯教程-substr()函数
    此方法以指定的字符数返回从指定位置开始的字符串中的字符。substr()-语法string.substr(start[,length]);start   -开始提取字符的位置(0到1的整数,小于字符串的长度)。length  -要提取的字符数substr()-返回值substr()方法根据给定的参数返回新的子字符......