在 Oracle 中的 decode() 函数
语法如下:
DECODE (expr, search1, result1[, search2, result2…][, default])
它用于比较参数 expr 的值,如果匹配到哪一个 search 条件,就返回对应的 result 结果,可以有多组 search 和 result 的对应关系,如果任何一个 search 条件都没有匹配到,则返回最后 default 的值。default 参数是可选的,如果没有提供 default 参数值,当没有匹配到时,将返回 NULL。
例:
查询职员表,根据职员的职位计算奖励金额,当职位分别是’MANAGER’、’ANALYST’、’SALESMAN’时,奖励金额分别是薪水的 1.2 倍、1.1 倍、1.05 倍,如果不是这三个职位,则奖励金额取薪水值:
SELECT ename, job, sal,
DECODE(job, 'MANAGER', sal * 1.2,
'ANALYST', sal * 1.1,
'SALESMAN', sal * 1.05,
sal
) bonus
FROM emp;
和 DECODE 函数功能相似的有 CASE 语句,实现类似于 if-else 的操作