Oracle中decode函数用法解析以及常用场景

article/2025/6/22 9:42:53

1.decode函数的两种形式

第一种形式

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

该函数的含义如下:

IF 条件=值1 THENRETURN(翻译值1)
ELSIF 条件=值2 THENRETURN(翻译值2)......
ELSIF 条件=值n THENRETURN(翻译值n)
ELSERETURN(缺省值)
END IF
第二种形式

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

这个函数运行的结果是,当字段或字段的运算的值等于值1时,该函数返回值2,否则返回值3
当然值1,值2,值3也可以是表达式,这个函数使得某些sql语句简单了许多

sign()函数

解释:
sign()函数根据某个值是0、正数还是负数,分别返回0、1、-1

用法示例:

select id,sign(id-2) from t_decode;

截图效果:
在这里插入图片描述

lpad()函数

在字段id前边补字段0 长度为2

select lpad(id,2,0) from t_decode;

在这里插入图片描述

2.decode的一些工作常用思路总结

a.准备测试数据

创建测试表t_decode,并插入测试数据

//创建表,插入数据,查询
create table t_decode(id integer,name varchar2(10)
);//插入数据
insert into t_decode values (1,'a');
insert into t_decode values (2,'b');
insert into t_decode values (3,'c');
insert into t_decode values (4,'a');

数据样式
在这里插入图片描述

b.第一种形式decode函数的常用思路
1. 简单使用:判断字符串
select id,name,decode(id,1,'第一个',2,'第二个',3,'第三个','没有') new_id 
from t_decode;

在这里插入图片描述

2.使用decode函数分段

判断表中id大小并根据大小划分不同范围
(-,2) low
[2,4) mid
[4,-] high

select id,name,decode(sign(id - 4),1,'high id',0,'high id','-1',decode(sign(id - 2),1,'mid id',0,'mid id',-1,'low id'))
from t_decode; 

在这里插入图片描述

c.第二种形式decode函数的常用思路
1. 比较大小
-- 比较大小
select decode(sign(100-90),-1,100,90) from dual;

在这里插入图片描述

2. 使用表达式来搜索字符串

判断name中是否含有a?

select id,name,decode(instr(name,'a'),0,'不含有a','含有a') as info from t_decode;

在这里插入图片描述

3. 实现行列转换

注意:decode相当于:case when then else end语句

select sum(decode(name,'a',id,0)) id_1,sum(decode(name,'b',id,0)) id_2,sum(decode(name,'c',id,0)) id_3 from t_decode;

在这里插入图片描述

添加测试:

select decode(name,'a',id,0) id_1,decode(name,'b',id,0) id_2,decode(name,'c',id,0) id_3 
from t_decode;-- 相等于:case when then else end
select case name when 'a' then id else 0 end as id_1,case name when 'b' then id else 0 end as id_2,case name when 'c' then id else 0 end as id_3 
from t_decode;

在这里插入图片描述

4. 结合Lpad函数,如何使主键的值自动加1并在前面补0
结合Lpad函数,如何使主键的值自动加1并在前面补0
select lpad(decode(count(id),0,1,max(to_number(id)+1)),14,'0') new_id from t_decode;

在这里插入图片描述

拆分详细讲解

select * from t_decode
在这里插入图片描述
select lpad(id,2,0) from t_decode
在这里插入图片描述
select to_number(id) from t_decode;
在这里插入图片描述
select max(to_number(id)+1) from t_decode;
在这里插入图片描述
select decode(count(id),0,1,max(to_number(id)+1)) from t_decode;
在这里插入图片描述
select lpad(decode(count(id),0,1,max(to_number(id)+1)),14,‘0’) new_id from t_decode;

在这里插入图片描述


http://chatgpt.dhexx.cn/article/G50xvkJj.shtml

相关文章

oracle+decode函数用法,oracle中decode函数用法

oracle中decode函数用法以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! DECODE函数相当于一条件语句(IF) 它将输入数值与函数中的参数列表相比较 根据输入值返回一个对应值 函数的参数列表是…

oracle decode函数用法详解

oracle的decode函数语法结构如下: decode (expression, search_1, result_1) decode (expression, search_1, result_1, search_2, result_2) decode (expression, search_1, result_1, search_2, result_2, ...., search_n, result_n) decode (expression, search_1, result_…

51单片机电路原理图_单片机晶振的必要性

单片机工作时,是一条一条地从ROM中取指令,然后一步一步地执行。单片机访问一次存储器的时间,称之为一个机器周期,这是一个时间基准。一个机器周期包括12个时钟周期。如果一个单片机选择了12MHZ晶振,它的时钟周期是1/12…

51单片机电路原理图_51单片机最小系统电路设计

51单片机最小系统具有体积小、质量轻、功能强、功耗低、性价比高等特点。由芯片、系统时钟、I/O端口设备及复位电路等构成。 电子学习资料大礼包​mp.weixin.qq.com 51单片机是STC公司开发制造的一种8位微控制芯片,拥有512字节的数据存储空间和8K字节的程序存储空间…

基于51单片机智能电子秤方案原理图程序设计

硬件设计 (文末附资料) 单片机最小系统 对51系列单片机来说,最小系统一般应该包括:单片机、晶振电路、复位电路。下面给出一个51单片机的最小系统电路图。 复位电路: 一、复位电路的用途:单片机复位电路就好比电脑的…

51单片机的步进电机控制系统(仿真+程序+报告+原理图)

1、主要功能 该系统由AT89C51单片机数码管模块步进电机模块按键模块构成。 可实现功能: 1、按键控制步进电机正反转、加减速、停止; 2、2个发光二极管显示正反转,1位7段LED数码管显示当前转速档位(共9个档位); 3、4个红…

51单片机电路原理图_(51单片机)课设项目2-超声波测距(SRF04、LCD1602、蜂鸣器报警电路)...

简单复盘一下做小项目时遇到的问题,下载地址在最后,有需要可以下载(在CSDN上我设置的是0C币下载,我发现好几次 会自己变??) 超声波模块SRF04 引脚 VCC:电源端 ECHO:接收端(高电平持续时间为超声波发出到返回的时间) TR:触发控制端,信号输入 NC(OUT):开关量输出…

基于51单片机的简易数字电压表proteus仿真原理图程序设计

硬件电路设计 原理图: 仿真图: 单片机的时钟电路与复位电路设计 本系统采用STC系统列单片机,相比其他系列单片机具有很多优点。一般STC单片机资源比其他单片机要多,而且执行速度快;STC系列单片机使用串口对单片机进…

课设-基于51单片机+超声波模块的避障小车(源码+原理图+Protel仿真)

基于51单片机超声波模块的避障小车(源码原理图Protel仿真) 一、功能二、模块2.1、电机驱动模块2.2、超声波模块 三、程序代码四、PCB原理图 一、功能 设计一辆利用超声波传感器来实现避障功能的小车,使小车对其运动方向受到的阻碍作出各种躲…

基于51单片机的交通灯原理图加代码

花了一个星期制作的交通灯仿真程序原理图&#xff0c;通过数码管显示路口的时间&#xff0c;通过led显示红绿灯。[TOC] #include<reg51.H> // 对单片机的口进行了定义 #define uint unsigned int #define uchar unsigned char uchar code a[10]{0x40,0x79,0x24,0x30,0…

51单片机电路原理图_51单片机玩转物联网基础篇03-独立按键

前言 上一节,我们完成了51单片机控制LED灯,并实现流水灯效果,本节我们学习操作独立按键,并通过两个按键,分别打开和关闭所有LED灯,按键作为输入设备,在系统开发过程中十分常见,一般来说,按键可以设置系统参数、控制系统运行状态。 一、基础知识 1.按键简介 通常的按键…

单片机基础:MCS-51单片机的硬件结构(附硬件结构框图)

单片机硬件结构知识点非常琐碎&#xff0c;通过一次两次的学习是不太可能记住的。想要熟练掌握硬件结构&#xff0c;最好的方法是在实验中练习&#xff0c;通过编程多见多用才能牢固的掌握。 MCS-51单片机硬件结构 1.硬件系统框图2.单片机功能图3.单片机的主要部件4.CPU内部结…

基于51单片机的智能温控风扇(程序+仿真+原理图)

目录 基于51单片机的智能温控风扇1、主要功能2、实验结果3、仿真工程4、原理图5、程序源码6、资源获取 基于51单片机的智能温控风扇 1、主要功能 基于51单片机的智能温控风扇&#xff0c;通过DS180温度传感器采集温度&#xff0c;并通过数码管显示温度&#xff0c;当温度高于…

基于51单片机的温度监测控制系统仿真程序原理图设计

整体方案设计 3.1.1 系统概述 整个系统以STC89C52单片机为核心器件,配合电阻电容晶振等器件,构成单片机的最小系统。其它个模块围绕着单片机最小系统展开。其中包括,传感器采用DS18B20,负责采集温度数据后发给单片机。显示设备采用4位共阴数码管,显示检测到的温度值。按键…

51单片机电路原理图_51单片机AD转换电路设计实现

51单片机AD转换电路设计实现 关于AD转换的原理,大家在《数字电子技术》中已经学过,这里做过多的介绍,本文介绍一款经典的8位AD转换芯片ADC0804,基于51单片机设计AD转换电路,并完成测量值的转换。 1 芯片引脚介绍 CS:片选信号,低电平有效,即CS=0时候芯片才能正常工作,单…

51单片机电路原理图_HX711的电子秤称重系统设计详解,51单片机,含Proteus仿真、C代码、原理图、论文等...

设计要求 1.系统可实现电子秤基本的称重功能(称重范围为0~10Kg,重量误差不大于0.005Kg); 2.系统应具备键盘输入单价,显示重量,计算总价的功能; 3.单价和总价金额的单位为元,最大金额数值为999.99元,金额误差不大于0.01元; 4.系统超出最大测量范围10Kg时,具有报警指…

51单片机的简易计算器设计(仿真+程序+原理图+PCB+设计报告)

本设计&#xff1a; 基于51单片机的简易计算器设计&#xff08;仿真程序原理图PCB设计报告&#xff09; 仿真&#xff1a;proteus 7.8 程序编译器&#xff1a;keil 4/keil 5 编程语言&#xff1a;C语言 编号S0001 芯片可以替换为STC89C52/STC89C51/AT89C52/AT89C51等51单片机芯…

51单片机计算机加原理图,MCS-51单片机最小系统的组成部分及电路图介绍

MCS-51单片机概述 MCS-51单片机是一种集成的电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到…

手把手教你看懂51单片机原理图

最近当了单片机课设的助教,又再次接触了51单片机。发现初学者还看不太原理图&#xff0c;不能理解单片机 led灯&#xff0c;蜂鸣器&#xff0c;数码管是怎么操作的。现在结合原理图讲解一下怎么操作这些外设模块&#xff01;我们就以一些初始化代码进行讲解。 注&#xff1a;这…

51单片机电路原理图_51单片机入门(第1篇):纯干货,单片机最小系统

当我们了解了什么是单片机,以及单片机有什么用之后,是否要考虑我们怎么去学习单片机呢?学习单片机其实很简单,需要的起步知识并不需要多少,接下来跟随我的步伐,一步一步的去了解单片机。本文将讲解单片机最小系统和仿真软件以及编程软件的选择。 0. 51单片机最小系统 先来…