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

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • chmod 755

    chmod 755转载自 https://www.cnblogs.com/shangzekai/p/5822907.html chmod是Linux下设置文件权限的命令,后面的数字表示不同用户或用户组的权限。一般是三个数字:第一个数字表示文件所有者的权限第二个数字表示与文件所有者同属一个用户组的其他用户的权限第三个数字表示其它用户组的权限。权限分为三种:读(r=4),写(w=2),执行(…

    2022年7月16日
    13
  • C++ | 矩阵类模板(类模板)

    C++ | 矩阵类模板(类模板)问题B:矩阵类模板(类模板)时间限制: 1Sec  内存限制: 128MB提交: 559  解决: 314[提交][状态][讨论版]题目描述设计一个矩阵类模板Matrix,支持任意数据类型的数据。要求至少包含2个成员函数:矩阵转置函数transport、以及打印输出函数print编写main函数进行测试,调用类的成员函数完成转置和输出。输入第一行先输入t,表示有t个测试用例从第二行开始输入…

    2022年5月14日
    54
  • 终极解决:AAPT2 error: check logs for details

    终极解决:AAPT2 error: check logs for details

    2021年9月30日
    49
  • navicat10.1.7注册码

    navicat10.1.7注册码navicat10.1.7注册码:NAVN-LNXG-XHHX-5NOO

    2022年10月9日
    0
  • linux 查看Java 进程的内存使用情况[通俗易懂]

    linux 查看Java 进程的内存使用情况[通俗易懂]top-b-n1|grepjava|awk'{print”PID:”$1″,mem:”$6″,CPUpercent:”$9″%”,”mempercent:”$10″%”}’…

    2022年8月23日
    5
  • js判断是否包含指定字符串_js正则表达式匹配字符串

    js判断是否包含指定字符串_js正则表达式匹配字符串前言:有时候,我们在js中需要判断一个字符串中,是不是包含某个字符。可以采用以下方法进行判断。String对象的方法方法一:indexOf()(推荐)varstr=”123″;console.log(str.indexOf(“3”)!=-1);//trueindexOf()方法可返回某个指定的字符串值,在首次出现的位置。如果要检索的字符串值没有出现,则改方法返回-1。方法二:search()…

    2022年10月7日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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