oracle 中decode函数[通俗易懂]

oracle 中decode函数[通俗易懂]Oracle中decode函数用法含义解释:decode(条件,值1,返回值1,值2,返回值2,…值n,返回值n,缺省值)该函数的含义如下:IF条件=值1THEN    RETURN(翻译值1)ELSIF条件=值2THEN    RETURN(翻译值2)    …ELSIF条件=值nTHEN    RETURN(翻译值n)ELSE    RETURN(缺省…

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

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

Oracle 中 decode 函数用法

含义解释:
decode(条件,值1,返回值1,值2,返回值2,…值n,返回值n,缺省值)

该函数的含义如下:
IF 条件=值1 THEN
    RETURN(翻译值1)
ELSIF 条件=值2 THEN
    RETURN(翻译值2)
    …
ELSIF 条件=值n THEN
    RETURN(翻译值n)
ELSE
    RETURN(缺省值)
END IF

decode(字段或字段的运算,值1,值2,值3)

   这个函数运行的结果是,当字段或字段的运算的值等于值1时,该函数返回值2,否则返回值3

当然值1,值2,值3也可以是表达式,这个函数使得某些sql语句简单了许多

使用方法:

1、比较大小
select decode(sign(变量1-变量2),-1,变量1,变量2) from dual; –取较小值
sign()函数根据某个值是0、正数还是负数,分别返回0、1、-1
例如:
变量1=10,变量2=20
则sign(变量1-变量2)返回-1,decode解码结果为“变量1”,达到了取较小值的目的。

2、此函数用在SQL语句中,功能介绍如下:

Decode函数与一系列嵌套的 IF-THEN-ELSE语句相似。base_exp与compare1,compare2等等依次进行比较。如果base_exp和 第i 个compare项匹配,就返回第i 个对应的value 。如果base_exp与任何的compare值都不匹配,则返回default。每个compare值顺次求值,如果发现一个匹配,则剩下的compare值(如果还有的话)就都不再求值。一个为NULL的base_exp被认为和NULL compare值等价。如果需要的话,每一个compare值都被转换成和第一个compare 值相同的数据类型,这个数据类型也是返回值的类型。

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;
vinson

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

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

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


相关推荐

  • windows 执行 bat命令问题

    windows 执行 bat命令问题window环境下,通过DOS命令模式,调用bat脚本,执行jar包。可以正常打印jar包中的日志都指定日志文件。通过tomcat部署的某服务去调用时出现不可调用,也不打印日志问题。分两步来确定问题:1、参数是否传递给bat脚本;2、bat脚本中的java-jar是否正常执行了;问题1通过,在bat脚本入口处增加echoname:%1age:%2>&g…

    2025年7月23日
    3
  • 学习笔记 | 非负矩阵分解(NMF)浅析

    学习笔记 | 非负矩阵分解(NMF)浅析这篇博客简单地介绍非负矩阵分解(NMF),包括背景说明、NMF原理简介、代码分享以及NMF在一个趣味问题中的解决方案。

    2022年6月26日
    34
  • mysql的where条件后加case_recommend

    mysql的where条件后加case_recommend背景:数据库用的Oracle;报表用的是【FineReport】,之前没用过,被临时授命解决问题,所以大概了解了一下。里面应该是集成了excel插件,报表样式如下:今天在项目中遇到一个这样的场景:A为汇总页面,显示的是按医院分组统计出来的一些数据,效果如下图图中每一列都能下钻到另一个页面,医院名称和起始时间都作为参数传送。前期因为某一些需求,有一家医院出现了两个不同的名…

    2025年9月3日
    8
  • matlabfor循环产生矩阵_matlab形成矩阵

    matlabfor循环产生矩阵_matlab形成矩阵参考:http://www.ilovematlab.cn/thread-101148-1-1.html这个ok:clc;clear;h=[10987654321];size=length(h);t=zeros(1,size);t(1)=h(1);t(1,2:size)=h(size:-1:2);H=toeplitz(h,t)这个也ok:clc;clear;h=[109…

    2022年10月7日
    5
  • debian10 中文乱码_ue中文乱码解决方案

    debian10 中文乱码_ue中文乱码解决方案系统版本:Debian6.0.2Squeeze产生乱码原因:系统没有中文字体解决方案:1、从win下拷贝后缀为ttf的字体库到/usr/share/fonts/truetype/,我这里拷贝MSYH.ttf(微软雅黑)。2、终端输入一下代码:   #su

    2022年10月18日
    3
  • JS全局变量不可使用的问题

    JS全局变量不可使用的问题关于js中全局变量不可使用的问题项目开发中,为了降低代码冗余,对于不同页面的相同代码可以放在一个public文件中,我的一个项目就遇到一个问题,我在一个js文件中定义的全局变量,在HTML和其他的JS文件中无法使用。解决办法我发现的是,我的全局变量放到了document.ready函数中,所以导致出现了函数的闭包问题,将变量的声明拿到ready函数之外就可以了,希望可以帮助到跟我遇到相同问题…

    2022年5月6日
    50

发表回复

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

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