#DECODE

decode
DECODE ( expr , value , result , , default )

DECODE表达式相当于条件表达式,与一系列嵌套的 IF-THEN-ELSE语句类似。

expr的值等于其后列出中的某一个指定value,则返回紧接着该value后的result;若不等于所列出的所有value,则返回default;当expr与多个value匹配成功时,返回第一个value对应的result。

该函数通常用于做排名等级判断。

当expr与各value之间的数据类型不一致时:

  • 同时存在数值型和布尔型时,函数返回invalid datatype。

  • 其它场景中,函数先将数据类型进行统一再比较,统一规则参见比较运算符章节描述。

value也为通用表达式,参照expr描述。

空值同样参与比较,其中,当expr与value均为NULL时,执行匹配成功处理。

示例

SELECT employee_name Name,
DECODE(sex,'1','Male','2','Female','Unknown') Sex
FROM employees;
NAME          SEX      
------------- ---------
Mask          Male    
John          Male    
Anna          Unknown 
Jack          Male    
Jim           Male    
 
SELECT DECODE('',1,1,2) res1,
DECODE(1,1,1,'1',2,3) res2,
DECODE(1,'',1,'1',2,3) res3,
DECODE('','',1,3) res4
FROM DUAL;
        RES1         RES2         RES3         RES4
------------ ------------ ------------ ------------
           2            1            2            1
pdf-btn 下载文档
copy-btn 复制链接