#DECODE
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