oracle decode(oracle decode用法)

更新时间:2023-03-01 21:10:58 阅读: 评论:0

oracle decode的用法

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、比较大小
lect 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语句相似。ba_exp与compare1,compare2等等依次进行比较。如果ba_exp和 第i 个compare项匹配,就返回第i 个对应的value 。如果ba_exp与任何的compare值都不匹配,则返回default。每个compare值顺次求值,如果发现一个匹配,则剩下的compare值(如果还有的话)就都不再求值。一个为NULL的ba_exp被认为和NULL compare值等价。如果需要的话,每一个compare值都被转换成和第一个compare 值相同的数据类型,这个数据类型也是返回值的类型。
Decode函数在实际开发中非常的有用
结合Lpad函数,如何使主键的值自动加1并在前面补0
lect LPAD(decode(count(记录编号),0,1,max(to_number(记录编号)+1)),14,'0') 记录编号 from tetdmis
eg:
lect decode(dir,1,0,1) from a1_interval
dir 的值是1变为0,是0则变为1
比如我要查询某班男生和女生的数量分别是多少?
通常我们这么写:
lect count(*) from 表 where 性别 = 男;
lect count(*) from 表 where 性别 = 女;
要想显示到一起还要union一下,太麻烦了
用decode呢,只需要一句话
lect decode(性别,男,1,0),decode(性别,女,1,0) from 表

3,order by对字符列进行特定的排序
还可以在Order by中使用Decode。
例:表table_subject,有subject_name列。要求按照:语、数、外的顺序进行排序。这时,就可以非常轻松的使用Decode完成要求了。
lect * from table_subject order by decode(subject_name, '语文', 1, '数学', 2, , '外语',3)

oracle中decode()函数

decode()只是个转义的函数
例如在你的语句中decode(category,
'COMPUTER',
retail*1.1)
的意思就是
假如字段category为COMPUTER'则返回retail*1.1,这里retail*1.1是什么类型返回值就是什么类型;看你第二个语句也没有错误(我说从语法结构上),而且我自己也做了测试没有问题;你可以加Q然后远程协助看看你的环境

oracle中decode()函数

decode()只是个转义的函数
例如在你的语句中decode(category,
'computer',
retail*1.1)
的意思就是
假如字段category为computer'则返回retail*1.1,这里retail*1.1是什么类型返回值就是什么类型;看你第二个语句也没有错误(我说从语法结构上),而且我自己也做了测试没有问题;你可以加q然后远程协助看看你的环境

oracle decode函数

--楼主 我来告诉你吧
--你的语句的意思是 当ename字段等于job字段的值时 把值置为 sal 你这个sal应该是一个字段名
--否则 就返回他自己的值 所以你的报错是因为 ename和另外两个字段的数据类型不一致
--也就是说ename,job ,sal 这三个数据类型要一致 必须一致 你可以检查一下 处理好这个就可以了
--DECODE(ename,job ,sal,ename ) 这隐性判断是 当ename=job 把ename=sal 否则 就等于他
--本身 所以 这三个数据类型要一致
--有什么问题可以随时找我 希望采纳

oracle中decode函数有什么用?

DECODE函数相当于一条件语句(IF).它将输入数值与函数中的参数列表相比较,根据输入值返回一个对应值。函数的参数列表是由若干数值及其对应结果值组成的若干序偶形式。当然,如果未能与任何一个实参序偶匹配成功,则函数也有默认的返回值。区别于SQL的其它函数,DECODE函数还能识别和操作空值.
其具体的语法格式如下:
DECODE(input_value,value,result[,value,result…][,default_result]);
其中:
input_value
试图处理的数值。DECODE函数将该数值与一系列的序偶相比较,以决定最后的返回结果
value
是一组成序偶的数值。如果输入数值与之匹配成功,则相应的结果将被返回。对应一个空的返回值,可以使用关键字NULL于之对应
result
是一组成序偶的结果值
default_result
未能与任何一序偶匹配成功时,函数返回的默认值
下面的例子说明了,如何读取用户CHECKUP表SEAPARK中的BLOOD_TEST_FLAG列下的项目,作为DECODE函数的实参支持值。
SELECT
checkup_type,
DECODE(blood_test_flag,’Y’,’Yes’,’N’,’No’,NULL,’None’,’Invalid’)
FROM
checkup;

关于Oracle的decode函数

可以啊,小于60不就是条件么。
不过decode要实现这个大于小于就要用到sign函数进行组合。
decode(sign(字段-60),-1,'正常',1,'异常')
建议用ca when then
ca when 字段<60 then ‘正' when 字段>60 then '异常' el '其他' end

本文发布于:2023-02-28 20:27:00,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/zhishi/a/167767625886755.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:oracle decode(oracle decode用法).doc

本文 PDF 下载地址:oracle decode(oracle decode用法).pdf

标签:oracle   decode
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 实用文体写作网旗下知识大全大全栏目是一个全百科类宝库! 优秀范文|法律文书|专利查询|