在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
1.decode函数的两种形式第一种形式含义解释:
该函数的含义如下: IF 条件=值1 THEN RETURN(翻译值1) ELSIF 条件=值2 THEN RETURN(翻译值2) ...... ELSIF 条件=值n THEN RETURN(翻译值n) ELSE RETURN(缺省值) END IF 第二种形式
这个函数运行的结果是,当字段或字段的运算的值等于值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. 实现行列转换
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函数用法,希望对大家有所帮助。在此也非常感谢大家对极客世界网站的支持! |
请发表评论