DECODE

说明

DECODE函数相当于一条件语句(IF)。它将输入数值与函数中的参数列表相比较,根据输入值返回一个对应值。函数的参数列表是由若干数值及其对应结果值组成的若干序偶形式。如果未能与任何一个实参序偶匹配成功,则函数返回默认值。

语法

decode ::=

参数

expr

待比较的值

search

条件值,与 expr 进行比较

result

对应于 search 条件的结果值

default

默认值,所有条件均不满足时返回的值,缺省时为 NULL

返回值

返回匹配的 result 值,都不匹配是返回 default 值。

注解

  • expr 与某个 search 值相等,则 DECODE 函数返回这个 search 之后首个 result 值。 若没有找到相等的 search 值,则 DECODE 函数返回 default 值。 这与C语言中的 switch 语句有些类似。
  • exprsearch 的类型限制较为宽松,可不同类型进行比较,并且可以比较 NULL 值。
  • 如果所有 result 表达式类型属于同一类,则选择精度高的类型为整个 result 的类型, 否则会以第一个 result 表达式类型作为整个 result 的类型。

示例

示例1: 使用 DECODE 按条件匹配串

--  使用 DECODE 按条件匹配串
SELECT DECODE(2, 1, 'a', 2, 'b', 'z');
DECODE(text)      |
------------------
b                 |
总数目:1

示例2: 缺省 default

--  缺省 default
SELECT DECODE(2, 1, 'a', 2, 'b');
DECODE(text)      |
------------------
b                 |
总数目:1