Oracle中decode函数用法解析以及常用场景「建议收藏」

Oracle中decode函数用法解析以及常用场景「建议收藏」1.decode函数的两种形式第一种形式含义解释:decode(条件,值1,返回值1,值2,返回值2,…值n,返回值n,缺省值)该函数的含义如下:IF条件=值1THEN    RETURN(翻译值1)ELSIF条件=值2THEN    RETURN(翻译值2)    ……ELSIF条件=值nTHEN    RETURN(翻译值n)ELSE    RET…

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

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

1.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语句简单了许多

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;

在这里插入图片描述

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

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

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


相关推荐

  • sql注入orderby子句的功能_sql group by order by一起用

    sql注入orderby子句的功能_sql group by order by一起用uniqueidentifier全局唯一标识符(GUID)。注释uniqueidentifier数据类型的列或局部变量可用两种方法初始化为一个值:使用NEWID函数。将字符串常量转换为如下形式(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx,其中

    2025年10月5日
    5
  • java 常量池和运行时常量池_常量池中的字符串是对象吗

    java 常量池和运行时常量池_常量池中的字符串是对象吗简介:这几天在看Java虚拟机方面的知识时,看到了有几种不同常量池的说法,然后我就去CSDN、博客园等上找资料,里面说的内容真是百花齐放,各自争艳,因此,我好好整理了一下,将我自认为对的理解写下来与大家共同探讨:在Java的内存分配中,总共3种常量池:1.字符串常量池(StringConstantPool):1.1:字符串常量池在Java内存区域的哪个位置?在JDK6.0及之前版本,字符串

    2022年7月28日
    5
  • Uml用例图总结

    Uml用例图总结

    2021年9月16日
    59
  • 永恒之蓝是谁激活成功教程的_永恒之蓝病毒激活成功教程了吗

    永恒之蓝是谁激活成功教程的_永恒之蓝病毒激活成功教程了吗简介:NSA武器库的公开被称为是网络世界“核弹危机”,其中有十款影响Windows个人用户的黑客工具,包括永恒之蓝、永恒王者、永恒浪漫、永恒协作、翡翠纤维、古怪地鼠、爱斯基摩卷、文雅学者、日食之翼和尊重审查。这些工具能够远程攻破全球约70%的Windows系统,无需用户任何操作,只要联网就可以入侵电脑,就像冲击波、震荡波等著名蠕虫一样可以瞬间血洗互联网,木马黑产很可能改造NSA的武器…

    2025年6月29日
    3
  • ArcGIS 9.3 下载(包含ArcGIS Desktop、ArcGIS Engine、ArcGIS Server、ArcSDE、workstation)

    ArcGIS 9.3 下载(包含ArcGIS Desktop、ArcGIS Engine、ArcGIS Server、ArcSDE、workstation)ArcGIS9.3下载(包含ArcGISDesktop、ArcGISEngine、ArcGISServer、ArcSDE、workstation)

    2022年7月3日
    34
  • 怎样设置CCProxy

    怎样设置CCProxy怎样设置 CCProxy 代理服务器 CCProxy 能够实现局域网内共享上网和帐号控制 界面友好 设置简单 功能强大 支持 Modem ADSL 宽带等共享上网 支持网页缓存 能实现多人共享浏览网页 收发邮件和联络 同时还能监视上网记录 可以针对不同用户合理的安排上网时间和带宽流量控制 有效地进行网站过滤 是非常适合政府部门 公司和学校使用的代理服务器软件 它能帮您搭建

    2025年10月8日
    4

发表回复

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

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