文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Oracle中decode函数用法是怎样的

2023-06-22 03:55

关注

这期内容当中小编将会给大家带来有关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;

截图效果:

Oracle中decode函数用法是怎样的

lpad()函数

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

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

Oracle中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');

数据样式

Oracle中decode函数用法是怎样的

b.第一种形式decode函数的常用思路

1. 简单使用:判断字符串
select id,name,decode(id,1,'第一个',2,'第二个',3,'第三个','没有') new_id from t_decode;

Oracle中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;

Oracle中decode函数用法是怎样的

c.第二种形式decode函数的常用思路

1. 比较大小
-- 比较大小select decode(sign(100-90),-1,100,90) from dual;

Oracle中decode函数用法是怎样的

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

判断name中是否含有a?

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

Oracle中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;

Oracle中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 endselect 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;

Oracle中decode函数用法是怎样的

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

Oracle中decode函数用法是怎样的

拆分详细讲解:

select * from t_decode

Oracle中decode函数用法是怎样的

select lpad(id,2,0) from t_decode

Oracle中decode函数用法是怎样的

select to_number(id) from t_decode;

Oracle中decode函数用法是怎样的

select max(to_number(id)+1) from t_decode;

Oracle中decode函数用法是怎样的

select decode(count(id),0,1,max(to_number(id)+1)) from t_decode;

Oracle中decode函数用法是怎样的

select lpad(decode(count(id),0,1,max(to_number(id)+1)),14,‘0') new_id from t_decode;

Oracle中decode函数用法是怎样的

上述就是小编为大家分享的Oracle中decode函数用法是怎样的了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯