DECODE 表达式类似于 CASE 表达式,依赖于在指定的列中找到的值,它可打印不同的结果。
元素 | 描述 | 限制 | 语法 |
---|---|---|---|
expr, else_expr, then_expr, when_expr | 可对其值和数据类型求值的表达式 | when_expr 与 expr 的数据类型必须相互兼容, then_expr 与 else_expr 也必须兼容。when_expr 的值不可为 NULL。 | 表达式 |
表达式 expr、when_expr 和 then_expr 是必需的。DECODE 对 expr 求值,并将它与 when_expr 比较。如果 when_expr 的值与 expr 的值相匹配,则 DECODE 返回 then_expr。
表达式 when_expr 与 then_expr 是表达式对,且您可在 DECODE 函数中指定任意数量的表达式对。在所有情况下,DECODE 都将第一个对的成员与 expr 比较,并返回该对的第二个成员,如果第一个成员与 expr 相匹配的话。
如果没有表达式与 expr 相匹配,则 DECODE 返回 else_expr。如果没有表达式与 expr 相匹配,且您未指定 else_expr,则 DECODE 返回 NULL。
DECODE 函数使用与 CASE 表达式相同的数据类型兼容性规则。要获取更多关于返回的数据类型的兼容性的信息,请参阅 CASE 表达式数据类型兼容性。
firstname | evaluation | firstname | evaluation | |
---|---|---|---|---|
Edward | Great | Mary | Good | |
Joe | Not done | Jim | Poor |
SELECT firstname, DECODE(evaluation, 'Poor', 0, 'Fair', 25, 'Good', 50, 'Very Good', 75, 'Great', 100, -1) as grade FROM students;
firstname | evaluation | firstname | evaluation | |
---|---|---|---|---|
Edward | 100 | Mary | 50 | |
Joe | -1 | Jim | 0 |