Oracle数据库之oracle中的decode的使用LPAD
小标 2018-11-27 来源 : 阅读 1435 评论 0

摘要:本文主要向大家介绍了Oracle数据库之oracle中的decode的使用LPAD,通过具体的内容向大家展现,希望对大家学习Oracle数据库有所帮助。

本文主要向大家介绍了Oracle数据库之oracle中的decode的使用LPAD,通过具体的内容向大家展现,希望对大家学习Oracle数据库有所帮助。


Oracle 中 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语句简单了许多


使用方法:

1、比较大小

select decode(sign(变量1-变量2),-1,变量1,变量2) from dual; --取较小值

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

例如:

变量1=10,变量2=20

则sign(变量1-变量2)返回-1,decode解码结果为“变量1”,达到了取较小值的目的。


2、此函数用在SQL语句中,功能介绍如下:


Decode函数与一系列嵌套的 IF-THEN-ELSE语句相似。base_exp与compare1,compare2等等依次进行比较。如果base_exp和 第i 个compare项匹配,就返回第i 个对应的value 。如果base_exp与任何的compare值都不匹配,则返回default。每个compare值顺次求值,如果发现一个匹配,则剩下的compare值(如果还有的话)就都不再求值。一个为NULL的base_exp被认为和NULL compare值等价。如果需要的话,每一个compare值都被转换成和第一个compare 值相同的数据类型,这个数据类型也是返回值的类型。


Decode函数在实际开发中非常的有用


结合Lpad函数,如何使主键的值自动加1并在前面补0

select LPAD(decode(count(记录编号),0,1,max(to_number(记录编号)+1)),14,'0') 记录编号 from tetdmis


eg:


select decode(dir,1,0,1) from a1_interval


dir 的值是1变为0,是0则变为1


比如我要查询某班男生和女生的数量分别是多少?


通常我们这么写:


select count(*) from 表 where 性别 = 男;


select count(*) from 表 where 性别 = 女;


要想显示到一起还要union一下,太麻烦了


用decode呢,只需要一句话


select decode(性别,男,1,0),decode(性别,女,1,0) from 表


3,order by对字符列进行特定的排序


大家还可以在Order by中使用Decode。


例:表table_subject,有subject_name列。要求按照:语、数、外的顺序进行排序。这时,就可以非常轻松的使用Decode完成要求了。


select * from table_subject order by decode(subject_name, '语文', 1, '数学', 2, , '外语',3)


lpad用法 lpad(字段名,填充长度,填充的字符) 如果是你那种写法的话函数用法你都用错了 select LEVEL, LPAD(LEVEL,2*LEVEL-1,' ')...

   

本文由职坐标整理并发布,希望对同学们学习Oracle有所帮助,更多内容请关注职坐标数据库Oracle数据库频道!


本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程