Oracle中decode函数有匹配的值为什么还返回空值?

Oracle中decode函数有匹配的值为什么还返回空值?,第1张

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等;

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/langs/13494132.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2025-09-01
下一篇2025-09-01

发表评论

登录后才能评论

评论列表(0条)

    保存