oracle最强大函数之一decode函数的使用[通俗易懂]

oracle最强大函数之一decode函数的使用[通俗易懂]decode的几种用法1:使用decode判断字符串是否一样DECODE(value,if1,then1,if2,then2,if3,then3,…,else)含义为IF条件=值1THEN    RETURN(value1)ELSIF条件=值2THEN    RETURN(value2)    ……ELSIF条件=值nTHEN  

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
decode的几种用法

1:使用decode判断字符串是否一样
DECODE(value,if1,then1,if2,then2,if3,then3,…,else)

含义为

IF 条件=值1 THEN

    RETURN(value 1)

ELSIF 条件=值2 THEN

    RETURN(value 2)

    ……

ELSIF 条件=值n THEN

    RETURN(value 3)

ELSE

    RETURN(default)

END IF

sql测试

select empno,decode(empno,7369,’smith’,7499,’allen’,7521,’ward’,7566,’jones’,’unknow’) as name from emp where rownum<=10

输出结果

7369
smith

7499
allen

7521
ward

7566
jones

7654
unknow

7698
unknow

7782
unknow

7788
unknow

7839
unknow

7844
unknow


2:使用decode比较大小
select decode(sign(var1-var2),-1,var 1,var2) from dual

sign()函数根据某个值是0、正数还是负数,分别返回0、1、-1

sql测试

select decode(sign(100-90),-1,100,90) from dual

输出结果

90

100-90=10>0 则会返回1,所以decode函数最终取值为90

反正

select decode(sign(100-90),1,100,90) from dual

输出结果

100

100-90=10>0返回1,判断结果为1,返回第一个变量100,最终输出结果为100


3:使用decode函数分段
工资大于5000为高薪,工资介于3000到5000为中等,工资小于3000为低薪

sql测试

SELECT 

    ename,sal,

    DECODE(SIGN(sal – 5000),

            1,

            ‘high sal’,

            0,

            ‘high sal’,

            – 1,

            DECODE(SIGN(sal – 3000),

                    1,

                    ‘mid sal’,

                    0,

                    ‘mid sal’,

                    – 1,

                    DECODE(SIGN(sal – 1000),

                            1,

                            ‘low sal’,

                            0,

                            ‘low sal’,

                            – 1,

                            ‘low sal’)))

FROM

    emp

输出结果

SMITH  
800  
low sal

ALLEN
1600
low sal

WARD
1250
low sal

JONES
2975
low sal

MARTIN
1250
low sal

BLAKE  
2850
low sal

CLARK
2450
low sal

SCOTT
3000
mid sal

KING
 5000
high sal

TURNER
1500
low sal

ADAMS
1100
low sal

JAMES
950
        low sal

FORD
3000
mid sal

MILLER
1300
low sal


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函数比较表达式和搜索字,如果匹配,返回结果;如果不匹配,返回default值;如果未定义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

JAMES
950
           含有s

FORD
3000
  不含有s

MILLER
1300
  不含有s

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/160085.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Iredmail批量导入用户名和密码脚本

    Iredmail批量导入用户名和密码脚本

  • Lerp 实现匀速运动「建议收藏」

    Lerp 实现匀速运动「建议收藏」Mathf.Lerp的常见误用是Update(){Transform.position=newVector3(transform.position.x,targetPosition,Time.deltaTime);}首先它是这样工作的:每帧都重新获取物体当前的位置,计算物体和目标距离的差距,再按照当前帧的持续时间(当做一个百分比)来移动这个比例的位置。因此整体运动是缓动的,先

    2022年10月24日
  • IntelliJ IDEA快速入门 | 第三篇:彻底卸载IntelliJ IDEA

    IntelliJ IDEA快速入门 | 第三篇:彻底卸载IntelliJ IDEA写在前面之前,笔者在自己本机上就已经安装过了一个IntelliJIDEA,只不过其版本是2019.1.3,在桌面上的快捷方式如下图所示。而且之前我也已经将其激活成功教程了,就是网上找的方案来进行激活成功教程的,激活成功教程之后确实能用,不过由于那个时候我还在用Eclipse做Java后端开发,所以一直都没用IntelliJIDEA,不知道过了多长时间,打开它发现已过试用期,MD,老子不是已经激活成功教程过了吗,而且好像还能用到2099年,就这,就这,就这,就这就不能用了????各位看官老爷们,今天是2021年3月23日,下午1

  • 统计学——单因素方差分析「建议收藏」

    统计学——单因素方差分析「建议收藏」概念方差分析:又称变异分析,是英国统计学家R.A.Fisher于1923年提出的一种统计方法,故有时也称为F检验。可简写为ANOVA。用于多组均数之间的显著性检验。要求:各组观察值服从正态分布或近似正态分布,并且各组之间的方差具有齐性。基本思想:将所有测量值间的总变异按照其变异的来源分解为多个部份,然后进行比较,评价由某种因素所引起的变异是否具有统计…

    2022年10月15日
  • nodejs多房间web聊天室[通俗易懂]

    nodejs多房间web聊天室[通俗易懂]一年之前的做的小项目,过了许久,翻出当时的PPT文档总结一下。源码下载:https://github.com/CreekLou/chatRoomNodejs背景简介1,JavaScript最早是运行在浏览器中,然而浏览器只是提供了一个上下文2,node.js事实上就是另外一种上下文,它允许在后端(脱离浏览器环境)运行JavaScript代码3,Node.js事实上既是一个

  • Android开发CompoundButton抽象类控件类的使用UI之Radio、Check、Toggle[通俗易懂]

    Android开发CompoundButton抽象类控件类的使用UI之Radio、Check、Toggle[通俗易懂]本篇文章就讲解了一下CompoundButton抽象类下的三个实现控件类的使用,在Android4.0之后,又新加入了一个控Switch,对它的使用与之上介绍的三个控件类似,这里就不再详细讲解了。前言这篇文章讲解一下Android平台下,RadioButton、CheckBox以及ToggleButton三个控件的用法,因为这三个控件之中都存在一个选中或是没选中的状态,所以

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号