Oracle中decode函数用法

 更新时间:2021年12月17日 14:50:49   作者:qichangjian  
本文详细讲解了Oracle中decode函数的用法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

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;

以上所述是小编给大家介绍的Oracle中decode函数用法,希望对大家有所帮助。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • Oracle配置数据库防火墙的流程步骤

    Oracle配置数据库防火墙的流程步骤

    数据库防火墙用于监控和控制对数据库的访问,防止未经授权的访问、SQL注入攻击和其他恶意活动,以下是一个详细的指导,展示如何使用开源的数据库防火墙工具,如 GreenSQL,来保护 MySQL 数据库,需要的朋友可以参考下
    2024-09-09
  • Oracle 11g+windows 环境下Ecology7系统安装过程

    Oracle 11g+windows 环境下Ecology7系统安装过程

    这篇文章主要介绍了Oracle 11g+windows 环境下Ecology7系统安装,安装步骤是以管理员模式运行Oracle setup.exe文件,根据提示安装Oracle,创建数据库,注意修改连接数,本文给大家详细讲解,需要的朋友可以参考下
    2022-10-10
  • Oracle PL/SQL异常处理方法解析

    Oracle PL/SQL异常处理方法解析

    这篇文章主要介绍了Oracle PL/SQL异常处理方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • Oracle性能究极优化(Oracle 性能优化)

    Oracle性能究极优化(Oracle 性能优化)

    Linux Journal 发表了一篇优化 Oracle 数据库的文章,感觉十分的有用。简要介绍其摘要和大家共同分享 Linux 在企业级数据库上应用
    2007-03-03
  • Oracle安装遇到INS-30131错误的解决方法

    Oracle安装遇到INS-30131错误的解决方法

    这篇文章主要介绍了Oracle安装遇到错误INS-30131的解决方法,感兴趣的小伙伴们可以参考一下
    2016-07-07
  • Oracle数据泵的导入与导出实例详解

    Oracle数据泵的导入与导出实例详解

    这篇文章主要给大家介绍了关于Oracle数据泵的导入与导出的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • 在Oracle关闭情况下如何修改spfile的参数

    在Oracle关闭情况下如何修改spfile的参数

    大家都知道在Oracle中pfile参数是可以手动更改的,但是spfile是二进制文件所以不可以手动更改,但我最近遇到了一个问题,修改参数错误,导致Oracle启动不了,一定要修改spfile该怎么办呢?下面通过这篇文章来一起看看吧。
    2016-12-12
  • ORACLE 12C PDB 维护基础知识介绍

    ORACLE 12C PDB 维护基础知识介绍

    CDB和PDB是ORACLE 12C一个很亮的新特性,由于他们的引入导致传统的ORACLE数据库管理理念不少发生了改变,这里列举了部分最基本的cdb和pdb管理方式
    2016-09-09
  • Oracle基础:通过sqlplus执行sql语句后的结果进行判断

    Oracle基础:通过sqlplus执行sql语句后的结果进行判断

    今天小编就为大家分享一篇关于Oracle基础:通过sqlplus执行sql语句后的结果进行判断,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • Oracle数据库更新大批量数据案例

    Oracle数据库更新大批量数据案例

    今天小编就为大家分享一篇关于Oracle数据库更新大批量数据案例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-10-10

最新评论