志在指尖
用双手敲打未来

oracle decode(oracle decode函数的用法)

oracledecode

DECODE意义
decode(条件,值1,回来值1,值2,回来值2,…值n,回来值n,缺省值)
这个是decode的表达式,详细的意义解释为:
IF条件=值1THEN
RETURN(翻译值1)
ELSIF条件=值2THEN
RETURN(翻译值2)
……
ELSIF条件=值nTHEN
RETURN(翻译值n)
ELSE
RETURN(缺省值)
ENDIF
DECODE的用法
这儿主要说的便是decode的用法,在很多时候这个函数仍是很有用的。
1.翻译值
数据截图:
需求:查询出的数据,1表明男生,2表明女生
selectt.id,
t.name,
t.age,
decode(t.sex,’1′,’男生’,’2′,’女生’,’其他’)assex
fromSTUDENT2t
成果:
2.decode比较大小
阐明:sign(value)函数会根据value的值为0,正数,负数,别离回来0,1,-1
数据:
需求:年龄在20以上的显现20以上,20以下的显现20以下,20的显现正好20
selectt.id,
t.name,
t.age,
decode(sign(t.age-20),
1,
’20以上’,
-1,
’20以下’,
0,
‘正好20’,
‘未知’)assex
fromSTUDENT2t
成果:
3.decode分段
数据暂无
需求:薪酬大于5000为高薪,薪酬介于3000到5000为中等,薪酬小于3000为底薪
selectname,
sal,
decode(sign(sal-5000),
1,
‘高薪’,
0,
‘高薪’,
-1,
decode(sign(sal-3000),1,’中等’,0,’中等’,-1,’低薪’))assalname
fromperson;
成果暂无
4.查找字符串
数据:
需求:找到含有三的姓名
selectt.id,
decode(instr(t.name,’三’),0,’姓名不含有三’,’姓名含有三’)asname,
t.age,
t.sex
fromSTUDENT2t
成果:
5.判断是否为空
数据:
需求:性别为空显现“暂无数据”,不为空原样输出
selectt.id,
t.name,
t.age,
decode(t.sex,NULL,’暂无数据’,t.sex)assex
fromSTUDENT2t
成果:
总结:decode在书写sql的时候仍是挺有用的,常用的应该是1和5了吧(我猜的,因为我便是经常用这两种)oracle decode

oracledecode函数的用法

意义解释:
decode(条件,值1,回来值1,值2,回来值2,…值n,回来值n,缺省值)
该函数的意义如下:
IF条件=值1THEN
RETURN(翻译值1)
ELSIF条件=值2THEN
RETURN(翻译值2)
……
ELSIF条件=值nTHEN
RETURN(翻译值n)
ELSE
RETURN(缺省值)
ENDIF
decode(字段或字段的运算,值1,值2,值3)
这个函数运转的成果是,当字段或字段的运算的值等于值1时,该函数回来值2,不然回来值3
当然值1,值2,值3也可以是表达式,这个函数使得某些sql句子简略了许多
使用方法:
1、比较大小
selectdecode(sign(变量1-变量2),-1,变量1,变量2)fromdual;–取较小值
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被以为和NULLcompare值等价。假如需要的话,每一个compare值都被转换成和第一个compare值相同的数据类型,这个数据类型也是回来值的类型。
Decode函数在实践开发中非常的有用
结合Lpad函数,怎么使主键的值自动加1并在前面补0
selectLPAD(decode(count(记载编号),0,1,max(to_number(记载编号)+1)),14,’0′)记载编号fromtetdmis
eg:
selectdecode(dir,1,0,1)froma1_interval
dir的值是1变为0,是0则变为1
比如我要查询某班男生和女生的数量别离是多少?
一般我们这么写:
selectcount(*)from表where性别=男;
selectcount(*)from表where性别=女;
要想显现到一起还要union一下,太麻烦了
用decode呢,只需要一句话
selectsum(decode(性别,男,1,0)),sum(decode(性别,女,1,0))from表
eg:
selectsum(decode(siteno,’LT’,1,0)),sum(decode(siteno,’SZ’,1,0))fromfacd605;
selectsum(casesitenowhen’LT’then1else0end),sum(casesitenowhen’SZ’then1else0end)fromfacd605;
vinson
总结
以上所述是小编给我们介绍的Oracle中decode函数用法,希望对我们有所帮助,假如我们有任何疑问请给我留言,小编会及时回复我们的。在此也非常感谢我们对脚本之家网站的支持!

未经允许不得转载:IT技术网站 » oracle decode(oracle decode函数的用法)
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

志在指尖 用双手敲打未来

登录/注册IT技术大全

热门IT技术

C#基础入门   SQL server数据库   系统SEO学习教程   WordPress小技巧   WordPress插件   脚本与源码下载