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

oracle最强大函数之一decode函数的使用相关推荐

  1. ORACLE的sign函数和DECODE函数

    比较大小函数 sign 函数语法: sign(n) 函数说明: 取数字n的符号,大于0返回1,小于0返回-1,等于0返回0 示例: 一.select sign( 100 ),sign(- 100 ), ...

  2. oracle sql文字列函数,Oracle 数据库SQL中 decode()函数简介

    decode()函数简介: 主要作用:将查询结果翻译成其他值(即以其他形式表现出来,以下举例说明): 使用方法: Select decode(columnname,值1,翻译值1,值2,翻译值2,.. ...

  3. 转载-Oracle ORACLE的sign函数和DECODE函数

    原文地址:http://www.cnblogs.com/BetterWF/archive/2012/06/12/2545829.html 转载以备用 比较大小函数 sign 函数语法: sign(n) ...

  4. Oracle函数之DECODE函数

    1.语法 2.用途 DECODE 函数将 expr 与 search 的值逐个比较.如果 expr 与 search 值相等,Oracle 返回 search 相应的 result.如果 expr 与 ...

  5. oracle nvl函数3个参数,oracle中的函数介绍(一):nvl函数、decode函数、case when函数、sum函数...

    最近做项目接触到的oracle数据库比较多,经常用到里面的一些函数,以前的博客中也介绍过行转列和列转行,这次再简单给大家介绍几个: nvl() NVL(a,b)就是判断a是否是NULL,如果不是返回a ...

  6. sign函数的功能 oracle,Oracle中sign函数和decode函数的使用

    1.比较大小函数SIGN sign(x)或者Sign(x)叫做符号函数,其功能是取某个数的符号(正或负): 当x>0,sign(x)=1; 当x=0,sign(x)=0; 当x<0, si ...

  7. Oracle sql语法中decode函数的用法

    decode(条件,值1,结果1,值2,结果2,值3,结果3,... 值n,结果n,缺省值) 改函数的解释: IF 条件=值1 THEN RETURN(结果1) ELSIF 条件=值2 THEN RE ...

  8. oracle (decode,Oracle sql语法中decode函数的用法

    decode(条件,值1,结果1,值2,结果2,值3,结果3,... 值n,结果n,缺省值) 改函数的解释: IF 条件=值1 THEN RETURN(结果1) ELSIF 条件=值2 THEN RE ...

  9. decode函数换成mysql的函数_Oracle—decode函数行转列

    文章说明:根据成绩表,对每个学生的成绩数据进项行转列操作,最后每行显示每个学生的各科成绩. 以下是行转列的各个步骤操作. 1.创建学生信息,课程,成绩三张表 CREATE TABLE TB_STUDE ...

最新文章

  1. Linux系统编程之--守护进程的创建和详解【转】
  2. anki vector robot入门语音指令大全
  3. Laravel5.5 MySQL配置、读写分离及操作
  4. java容器02--ArrayList源码分析
  5. Windows三十年进化史,从Windows 1.0到Windows 10
  6. chord协议模拟实现_VB.NET和单片机串口通信实现监控单片机数字量输入继电器输出模拟量输入模拟量输出...
  7. php排列组合1004无标题,PHP的排列组合有关问题
  8. 如何真机PC桥接小凡模拟器进行设备管理
  9. 一键将知网CAJ文件转换成带书签的PDF
  10. mysql导入shapefile
  11. 设计模式之责任链模式(Java实现)
  12. opera安装java插件_欧朋浏览器Opera插件安装指南
  13. Java日期计算总结(包含工作日排除节假日)
  14. kali2020进入单模式_Kali Linux 2020.3稳定版已发布 支持自动启用HiDPI模式
  15. linux管道只能运输参数吗,oeasy教您玩转 linux 010212 管道 pipe
  16. android把音乐存到sd卡上,将离线音乐移动到Spotify for Android到SD卡 | MOS86
  17. java.lang.IllegalStateException: 由于没有提供multi-part配置,无法处理parts
  18. aardio - 写注册表改鼠标右键Kate菜单项信息
  19. html5 dpi,关于meta viewport中target-densitydpi属性详解(推荐)_哒哒_前端开发者
  20. 上海有哪些不错的互联网公司?

热门文章

  1. 英语翻译 Maximum sum
  2. python 去除不可见字符 \x00
  3. C++继承详解之四——is-a接口继承和has-a实现继承
  4. ValidationSummary 控件
  5. centos配置magenta开发环境
  6. java 石头剪刀布小游戏
  7. 石头剪刀布的python代码
  8. 淘宝图片尺寸怎么修改?电脑怎么修改图片尺寸大小?
  9. 牛客Wannafly挑战赛29 A 御坂美琴 思维题
  10. 视频教程-MyBatis简明教程-Java