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

Decode函数在实际开发中非常的有用

结合Lpad函数,如何使主键的值自动加1并在前面补0

select LPAD(decode(count(记录编号),0,1,max(to_number(记录编号)+1)),14,'0') 记录编号 from tetdmis

eg:

select decode(dir,1,0,1) from a1_interval

dir 的值是1变为0,是0则变为1

比如我要查询某班男生和女生的数量分别是多少?

通常我们这么写:

select count(*) from 表 where 性别 = 男;

select count(*) from 表 where 性别 = 女;

要想显示到一起还要union一下,太麻烦了

用decode呢,只需要一句话

select sum(decode(性别,男,1,0)),sum(decode(性别,女,1,0)) from 表

eg:

select sum(decode(siteno,'LT',1,0)),sum(decode(siteno,'SZ',1,0)) from facd605;

select sum(case siteno when 'LT' then 1 else 0 end),sum(case siteno when 'SZ' then 1 else 0 end) from facd605;

总结

以上就是本文关于oracle中decode函数的使用方法示例的全部内容,希望对大家有所帮助。欢迎参阅:Oracle中游标Cursor基本用法详解、oracle数据库ORA-01196错误解决办法分享、oracle常见故障类别及规划解析等,感谢朋友们对本站的支持!

decode的mysql用法_oracle中decode函数的使用方法示例相关推荐

  1. java decode函数用法_Oracle 中 decode 函数用法

    含义解释: decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值) 该函数的含义如下: IF 条件=值1 THEN RETURN(翻译值1) ELSIF 条件=值2 THE ...

  2. mysql contains函数用法_Oracle 中Contains 函数的用法有哪些

    Oracle 中Contains 函数的用法有哪些 发布时间:2020-07-10 16:14:49 来源:亿速云 阅读:175 作者:Leah Oracle 中Contains 函数的用法有哪些?很 ...

  3. mysql 特殊函数_MySQL中sleep函数的特殊现象示例详解

    前言 MySQL中的系统函数sleep,实际应用的场景不多,一般用来做实验测试,昨天在测试的时候,意外发现sleep函数的一个特殊现象.如果在查询语句中使用sleep函数,那么休眠的时间跟返回的记录有 ...

  4. mariadb mysql 语法_Mariadb MySQL、Mariadb中GROUP_CONCAT函数使用介绍

    MySQL.Mariadb中GROUP_CONCAT 函数使用介绍 By:授客 QQ:1033553122 语法: GROUP_CONCAT([DISTINCT] column_name [ORDER ...

  5. mysql中explain的使用,mysql使用方法_mysql中explain函数的使用方法

    摘要 腾兴网为您分享:mysql中explain函数的使用方法,英语字典,小熊到家,腾讯新闻,刷机大师等软件知识,以及adobeflashplayerformac,灯光工厂,全民小视频,网盘解析,37 ...

  6. python中divmod函数的用法_Python中divmod函数的用法

    Python中divmod函数的用法,语言,余数,是一种,面向对象,函数 Python中divmod函数的用法 Python中divmod函数的用法 在Python中divmod函数的作用是把除数和余 ...

  7. php中icon,php中iconv函数的使用方法

    本篇文章中的内容介绍的是php中iconv函数的使用方法,在这里分享给大家,有需要的朋友可以参考一下 最近在做一个程序,需要用到iconv函数把抓取来过的utf-8编码的页面转成gb2312, 发现只 ...

  8. Excel中Sumproduct函数的使用方法

    1.sumproduct函数的含义 1 1.Sumproduct函数的适用范围,在给定的几组数组中,然后把数组间对应的元素相乘,最后返回乘积之和. 从字面上可以看出,sumproduct有两个英文单词 ...

  9. php excel 函数,php实现excel中rank函数功能的方法

    php实现excel中rank函数功能的方法 发布于 2015-10-28 18:54:25 | 77 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本语言PHP(外文名: Hyperte ...

最新文章

  1. python plot设置坐标轴_python matplotlib坐标轴设置的方法
  2. Python实现RGB和Lab颜色空间互转
  3. expect switch 多条件_JavaScript-流程控制语句:选择结构(if和switch)
  4. shiro框架@RequiresPermissions 解释
  5. Google搜索图片时只显示第一页
  6. oracle 结果缓存,Result cache结果缓存
  7. [webpack-cli] Unable to load ‘@webpack-cli/serve‘ command
  8. php 获取mac地址栏,php 获取网卡物理(MAC)地址的实现方法
  9. Webpack4.0 升级配置
  10. freebsd linux性能,为什么有人会选择FreeBSD而不是Linux?[关闭]
  11. 如何实现降维处理(R语言)
  12. cmake指定输出安装目录
  13. python消息中间件activemq_python 发送和接收ActiveMQ消息的实例
  14. apache设置开机启动启动
  15. OneNote PC端同步时遇到0×80004005
  16. 中国锂电设备行业营状况分析及未来发展动向预测报告2022-2028年版
  17. 分布式:分布式系统设计策略。
  18. 1414,成绩(C++一本通评测系统)
  19. RHCA-红帽认证架构师
  20. php如何实现局域网,局域网中是如何实现一对一通信

热门文章

  1. 使用Scrapy框架爬取慕课网页
  2. 电商服务架构——LAMP
  3. mosquitto --用户配置 及权限管理
  4. python函数返回值
  5. fMRI研究 | 社交情境下的混合情绪
  6. vue 获取数组长度_Vue数据响应式
  7. php解压程序——unzip6.0的使用,如何使用unzip命令解压缩文件
  8. SQL外键约束多表查询级联删除子查询
  9. 详细Android studio 控件对齐方式
  10. webpack构建问题:Unexpected token: name (has)