贵州做网站公司
贵州做网站公司~专业!靠谱!
10年网站模板开发经验,熟悉国内外开源网站程序,包括DEDECMS,WordPress,ZBlog,Discuz! 等网站程序,可为您提供网站建设,网站克隆,仿站,网页设计,网站制作,网站推广优化等服务。我们专注高端营销型网站,企业官网,集团官网,自适应网站,手机网站,网络营销,网站优化,网站服务器环境搭建以及托管运维等。为客户提供一站式网站解决方案!!!

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

来源:网络转载 时间:2024-01-29 08:15:24

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;
90%9C%E7%B4%A2%E5%AD%97%E7%AC%A6%E4%B8%B2">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 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;
01%E5%B9%B6%E5%9C%A8%E5%89%8D%E9%9D%A2%E8%A1%A50">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;

拆分详细讲解:

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;

160064.html

标签:oracle decode-

SEO小店网站优化 能带来大量精准流量的网站才是好网站,小店网络公司SEO优化推广可以为企业网站带来大量的有效流量。 ...

汉寿网站排名快速提升 汉寿网络公司快速提升企业网站排名,通过网站优化推广,让汉寿企业网站在搜索引擎的排名长期稳定。 ...

SEO张家界网站优化 能带来大量精准流量的网站才是好网站,张家界网络公司SEO优化推广可以为企业网站带来大量的有效流量。 ...

渤海银行是哪里的银行?这是天津的一家银行。渤海银行全称渤海银行股份有限公司,成立于2005年12月31日。是一家全国性股份制商业银行,总行位于天津市河东区海河东路218号。渤海银行注册资本144.5亿元。渤海银行是第一家总部设在天津的商业银行,也是第一家在初创阶段引入境外战略投资者的中资商业银行。2019年,在英国《银行家》杂志发布的“全球银行1000强”排名中,渤海银行排名攀升,全球银行排名第1...

台球裁判薪水多少?台球裁判的平均年薪应该在10万欧元左右。台球裁判的工资也是分等级的,世界级的,国家级的,相差好几倍!(注:国内外台球裁判工资换算以欧元计算,与球员一致。这是我个人的看法。)以下是台球裁判员的选拔程序:台球裁判从三级裁判开始,达到国际。获得推荐人 s卡需要国家体育部门审核。获得台球裁判的主要条件如下:1.你需要一定的切球经验,裁判经验的要求根据裁判的水平不同而不同。想要通过国家二级...

为什么普通火车票有怀化南站与怀化站?怀化南站以前是高铁站,只用高铁。今年以来,很多普通列车也进站了,所以买票的时候会显示怀化站和怀化南站。但是两站之间的交通很方便,有直达车。所以唐 不要太担心换台。此外,怀化南站也有直达怀化 的下属县。为什么普通火车票有怀化南站与怀化站?因为怀化南站是高铁站,怀化站是普通列车。怀化南站创办于2012年10月;2013年6月完成主体工程建设;2014年12月竣工,正...

TOP