Oracle中decode函数用法

中函数用法

中函数用法1.函数的两种形式

第一种形式

含义解释:

(条件,值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时oracle decode 用法,该函数返回值2Oracle中decode函数用法,否则返回值3

当然值1,值2,值3也可以是表达式,这个函数使得某些sql语句简单了许多

sign()函数

解释:

sign()函数根据某个值是0、正数还是负数Oracle中decode函数用法,分别返回0、1、-1

用法示例:

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

截图效果:

image.png

lpad()函数

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

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

image.png

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

a.准备测试数据

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

//创建表,插入数据,查询
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');

数据样式

image.png

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

1. 简单使用:判断字符串

select id,name,
    decode(id,1,'第一个',2,'第二个',3,'第三个','没有') new_id 
from t_decode;

image.png

2.使用函数分段

判断表中id大小并根据大小划分不同范围

(-,2) low

2,4) mid

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;

image.png

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

1. 比较大小

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

image.png

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

判断name中是否含有a?

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

3. 实现行列转换

注意:相当于: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;

image.png

添加测试:

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;

image.png

4. 结合Lpad函数oracle decode 用法,如何使主键的值自动加1并在前面补0

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

image.png

拆分详细讲解:

select * from t_decode;

image.png

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

image.png

select to_number(id) from t_decode;

image.png

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

image.png

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

image.png

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

image.png

以上所述是介绍的中函数用法,希望对大家有所帮助。

最后编辑于 :2022.10.20 15:55:12

©著作权归作者所有,转载或内容合作请联系作者

【社区内容提示】社区部分内容疑似由AI辅助生成oracle decode 用法,浏览时请结合常识与多方信息审慎甄别。

公告:
1. 本站所有资源来源于用户上传和网络,如有侵权请联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系站长处理!
6. 本站不售卖代码,资源标价只是站长收集整理的辛苦费!如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
7. 站长QQ号码 2205675299

资源库 - 资源分享下载网 » Oracle中decode函数用法

常见问题FAQ

关于资源售价和售后服务的说明?
本站所有资源的标价均为本站收集资源的辛苦费,不代表资源本身的价值。软件是高智慧高价值的商品,不可能是白菜价。本站资源标价只是赞助费用,收取的赞助费仅用来维持本站的日常运营!毕竟收集整理资料需要投入云计算资源和站长大量的精力。
代码有没有售后服务和技术支持?
由于代码的运行具有不可预见性,本站不保证代码完整可运行,不提供技术支持和售后服务。 本站原创代码都是站长自己开发的,可以有偿提供技术支持服务。 网站里标明【亲测】的代码都是站长亲测过的,其他的代码由于精力有限,没有一一测试,不能保证代码就一定能够使用,更没有技术支持服务,下载前请自行斟酌。
有没有搭建服务?
由于搭建服务比较费时费力,所以本站除了原创代码外均不提供搭建服务。本站分享代码纯属兴趣爱好,不以盈利为目的,请勿咨询有没有搭建服务,谢谢理解。
链接地址失效了怎么办?
请带上资源链接地址联系客服,工作时间内我们看到后将第一时间回复。
关于解压密码
本站资源一般都没有加密,如果发现需要解压密码的,那么就输入 hao.35dc.com 试试。

发表评论

资源库,由老程序员细心甄别、精心筛选,只为提供优质的源码资源

关于我们 联系我们