
decode函数相当于一条件语句(if)它将输入数值与函数中的参数列表相比较,根据输入值返回一个对应值。函数的参数列表是由若干数值及其对应结果值组成的若干序偶形式。当然,如果未能与任何一个实参序偶匹配成功,则函数也有默认的返回值。区别于sql的其它函数,decode函数还能识别和 *** 作空值
其具体的语法格式如下:
decode(input_value,value,result[,value,result…][,default_result]);
可以啊,小于60不就是条件么。
不过decode要实现这个大于小于就要用到sign函数进行组合。
decode(sign(字段-60),-1,'正常',1,'异常')
建议用case when then
case when 字段<60 then ‘正' when 字段>60 then '异常' else '其他' end
select decode('苹果','苹果',1,'梨子',2,0) from dual;
结果为:1
select decode('梨子','苹果',1,'梨子',2,0) from dual;
结果为:2
select decode('橘子','苹果',1,'梨子',2,0) from dual;
结果为:0
第一个参数是需要比较的值,第二个,第四个,是匹配值,匹配成功第二个则输出1,匹配成功第四个输出2,都没匹配输出0
首先说明,这种统计应该是Group
By
更适合啊!
另外,对于提出的问题
1、SQL并没有错,我已经测试过。
2、你需要看下你的SEX下的值是否匹配
比如,你直接select
count()
from
e
where
sex='男';
看看查询结果,如果是0的话,应该是你的‘男’前后有其他的不可见的值,比如空格,回车,转行等
Oracle提供了一些逻辑判断函数,这些函数可以在查询中使用。
1
nvl
:针对空值进行测试
函数原型为:NVL(testValue,SubstituteValue)
常见的用法是
Select max(score)
From
SC
Where
Name=‘Jerry’
有时max(score)为空,也就是说Jerry并没有考试记录,这时我们用"No
Record"标注一下:
Select
NVL(max(score),"No
Record")
From
SC;
还有一个NVL2函数跟其相似,函数原型为:
NVL(testValue,SubValue1,SubValue2)
NVL2函数实现的是若testValue为NULL,返回SubValue1,否则返回SubValue2。
2Decode函数
Decode函数的原型为:
Decode(testValue,
if1,
then1,
if2,then2else)
针对testValue进行测试,若testValue等于if1则返回then1,若testValue等于if2则返回then2,若都没有返回,刚返回else 示例如下:
若我们用Decode可以这样实现:
SELECT
class,
course,
DECODE
(student,
'A',
'Anco',
'B',
'Bily',
'C',
'Candy',
'D',
'Davi',
'E',
'Eve',
'F',
'Fion'
)
AS
en_name
FROM
studentinfo
3
to_char函数功能,就是将数值型或者日期型转化为字符型,转换过程中可以进行格式化处理,函数原型较多,示例如下:
跟版本无关,所有的oracle中decode用法都一样。
decode()函数简介:
主要作用:将查询结果翻译成其他值(即以其他形式表现出来,以下举例说明);
使用方法:
Select decode(columnname,值1,翻译值1,值2,翻译值2,值n,翻译值n,缺省值)
From talbename
Where …
其中columnname为要选择的table中所定义的column,
·含义解释:
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
注:其中缺省值可以是你要选择的column name 本身,也可以是你想定义的其他值,比如Other等;
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)