运维开发网

Oracle的函数用法

运维开发网 https://www.qedev.com 2022-05-17 17:31 出处:网络
本文详细讲解了Oracle中decode函数的用法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 1.decode函数的两种形式第一种形式

本文详细讲解了Oracle中decode函数的用法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 1.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第二种形式

解码(场或场操作,值1,值2,值3)

该函数的结果是,当字段或其运算的值等于1时,函数返回值2,否则返回值3。

当然,值1、2和3也可以是表达式,这使得一些sql语句简单得多。

sign()函数

解释:

sign()函数分别返回0、1和-1,具体取决于值是0、正数还是负数。

使用示例:

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

截图效果:


lpad()函数

字段0的长度是字段id前面的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)低

[2,4]mid

[4,-]高

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. 使用表达式来搜索字符串

确定名称是否包含# 63;

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;


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;


以上是边肖介绍的Oracle中decode函数的用法。希望对你有帮助

0

精彩评论

暂无评论...
验证码 换一张
取 消