首页 > 数据库 >Oracle 中 decode 函数用法

Oracle 中 decode 函数用法

时间:2023-10-18 13:23:24浏览次数:36  
标签:RETURN 函数 sum 用法 decode Oracle 性别 select

decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值)

Decode函数与一系列嵌套的 IF-THEN-ELSE语句相似。该函数的含义如下:
IF 条件=值1 THEN
    RETURN(翻译值1)
ELSIF 条件=值2 THEN
    RETURN(翻译值2)
    ......
ELSIF 条件=值n THEN
    RETURN(翻译值n)
ELSE
    RETURN(缺省值)
END IF

使用方法: 
1、比较大小

select decode(sign(变量1-变量2),-1,变量1,变量2) from dual; --取较小值
sign()函数根据某个值是0、正数还是负数,分别返回0、1、-1

2、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一下,太麻烦了

或者:

select sum(case when 性别=‘男’  then 1 else 0 end )as m_qty,sum(case when 性别=‘女’  then 1 else 0 end )  as f_qty from 表

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

标签:RETURN,函数,sum,用法,decode,Oracle,性别,select
From: https://www.cnblogs.com/bellin124/p/17771849.html

相关文章

  • 【MySQL】DATE_FORMAT,DATE_ADD函数用法
    一、示例1select*frombi.testwhereDATE_FORMAT(UPDATE_TIME,'%Y-%m-%d')='2023-09-11';当然 '%Y-%m-%d'是可以根据实际需求调整的  二、示例22.1给时间增加一小时UPDATEbi.testSETUPDATE_TIME=DATE_ADD(UPDATE_TIME,INTERVAL1HOUR);2.2给时间减少......
  • 软件测试|深入理解Python的encode()和decode()方法
    简介在Python中,字符串是不可变的序列对象,它由Unicode字符组成。当我们需要在字符串和字节之间进行转换时,Python提供了两个非常重要的方法:encode()和decode()。这两个方法允许我们在Unicode字符和字节之间进行相互转换,以便在处理文本和二进制数据时更加灵活。在本文中,我们将深入......
  • axios基本用法
    Axios是一个流行的JavaScript库,用于进行HTTP请求。它可以在浏览器和Node.js环境中使用,提供了一种简单而强大的方式来与Web服务器进行通信,以下是Axios的基本用法示例:安装Axios:使用npm或yarn安装Axios:npminstallaxios//或yarnaddaxios在项目中引入Axios:constaxios......
  • break、continue、return在循环中用法的区别
    1.break:(1).结束当前整个循环,执行当前循环下边的语句。忽略循环体中任何其它语句和循环条件测试。(2).只能跳出一层循环,如果你的循环是嵌套循环,那么你需要按照你嵌套的层次,逐步使用break来跳出。2.continue:(1).终止本次循环的执行,即跳过当前这次循环中continue语句后尚未执......
  • 资源消耗类应急处理方法oracle
    1.高资源消耗进程应急处理现象描述某个oracleprocessCPU使用率非常高。某个oracleprocessMEM使用率非常高。影响因素暂无解决方法1、使用TOPAS观察哪个进程CPU使用率高,找出相关进程号,通过以下命令定位数据库SID号.Selectsid,sql_id,event,statusfromv$sessionwherepaddri......
  • Java中::的用法
    “::”是Java8引入的新特性之一,常常被称作为方法引用,提供了一种不执行方法的方法。使用“::”可以进一步简化一些使用了lambda表达式的代码,让代码更加简洁。用法1:省略lamda表达式publicclassTest01{publicstaticvoidmain(String[]args){String[]array......
  • 示波器探头类型和用法介绍
    本文将介绍各种探头的类型和用法什么是探头:示波器是电子工程师最常用的测量仪器,而示波器探头毫无疑问是示波器最常用的配件。示波器探头是连接被测电路与示波器输入端的电子部件。没有探头,示波器就成了个摆件,只能作为装饰品啦。在选择示波器探头之前,我们最好看看示波器的说明书......
  • Oracle中如何根据查询sql片段定位查询客户端主机地址
    --1.根据sql片段获取sql_id--select*fromv$sqlwherelast_active_time>sysdateandsql_textlike'%ZL0204_03r%';selectsql_id,modulefromv$sqlwherelast_active_time>sysdateandsql_textlike'%ZL0204_03%';--2.根据sql_id查询sid......
  • Vue中 三个点 ... 的用法
    Vue中三个点...的用法主要是操作数组和对象一、操作数组//1.把数组中的元素孤立起来letiArray=['1','2','3'];console.log(...iArray);//打印结果123//2.在数组中添加元素letiArray=['1','2','3'];console.log(['0&......
  • Math.random() 用法
    Math.random()可以随机产生一个[0,1)(左闭右开)之间的随机数double类型intrandom=(int)(Math.random()*10)   随机产生0-9之间的数字,包括0和9Math.random()*(n-m)+m     随机产生n-m之间的数字包括m不包nMath.random()*(n+1-m)+m  随机产生n......