类别:

条件表达式函数

DECODE

按顺序将选择表达式与每个搜索表达式进行比较。一旦搜索表达式与选择表达式匹配,就会返回相应的结果表达式。

备注

Snowflake 中的 DECODE 与 PostgreSQL 中的 DECODE 函数不同,后者可将数据转换为不同的编码。

语法

DECODE( <expr> , <search1> , <result1> [ , <search2> , <result2> ... ] [ , <default> ] )
Copy

实参

expr

这是“选择表达式”。将“搜索表达式”与此选择表达式进行比较,如果存在匹配项,则 DECODE 返回与该搜索表达式对应的结果。选择表达式通常是列,但也可以是子查询、字面量或其他表达式。

searchN

搜索表达式表示要与选择表达式进行比较的值。如果其中一个搜索表达式匹配,则该函数将返回相应的 result。如果多个搜索表达式匹配,则仅返回第一个匹配项的结果。

resultN

结果是其中一个搜索表达式与选择表达式匹配时返回的值。

default

如果指定了可选的默认值,并且没有任何搜索表达式与选择表达式匹配,则 DECODE 将返回此默认值。

使用说明

  • 请注意,与 CASE 相反,选择表达式中的 NULL 值与搜索表达式中的 NULL 值相匹配。

  • expr 可以包含集运算符,如 UNIONINTERSECTEXCEPTMINUS。 使用集合运算符时,请确保数据类型兼容。有关详细信息,请参阅 集运算符 主题中的 一般使用说明

排序规则详细信息

  • 选择表达式和搜索表达式的排序规则规范必须全部兼容。

  • 从函数返回的值保留具有最高 优先级 排序规则的结果的排序规则规范。

示例

创建表并插入行:

CREATE TABLE d (column1 INTEGER);
INSERT INTO d (column1) VALUES 
    (1),
    (2),
    (NULL),
    (4);
Copy

默认值为 'other' 的示例(请注意等 NULL 等于 NULL):

SELECT column1, decode(column1, 
                       1, 'one', 
                       2, 'two', 
                       NULL, '-NULL-', 
                       'other'
                      ) AS decode_result
    FROM d;
+---------+---------------+
| COLUMN1 | DECODE_RESULT |
|---------+---------------|
|       1 | one           |
|       2 | two           |
|    NULL | -NULL-        |
|       4 | other         |
+---------+---------------+
Copy

没有默认值的示例(请注意,不匹配的值返回 NULL):

SELECT column1, decode(column1, 
                       1, 'one', 
                       2, 'two', 
                       NULL, '-NULL-'
                       ) AS decode_result
    FROM d;
+---------+---------------+
| COLUMN1 | DECODE_RESULT |
|---------+---------------|
|       1 | one           |
|       2 | two           |
|    NULL | -NULL-        |
|       4 | NULL          |
+---------+---------------+
Copy
语言: 中文