- 类别:
DECODE¶
按顺序将选择表达式与每个搜索表达式进行比较。一旦搜索表达式与选择表达式匹配,就会返回相应的结果表达式。
备注
Snowflake 中的 DECODE 与 PostgreSQL 中的 DECODE 函数不同,后者可将数据转换为不同的编码。
语法¶
DECODE( <expr> , <search1> , <result1> [ , <search2> , <result2> ... ] [ , <default> ] )
实参¶
expr
这是“选择表达式”。将“搜索表达式”与此选择表达式进行比较,如果存在匹配项,则
DECODE
返回与该搜索表达式对应的结果。选择表达式通常是列,但也可以是子查询、字面量或其他表达式。searchN
搜索表达式表示要与选择表达式进行比较的值。如果其中一个搜索表达式匹配,则该函数将返回相应的
result
。如果多个搜索表达式匹配,则仅返回第一个匹配项的结果。resultN
结果是其中一个搜索表达式与选择表达式匹配时返回的值。
default
如果指定了可选的默认值,并且没有任何搜索表达式与选择表达式匹配,则
DECODE
将返回此默认值。
使用说明¶
排序规则详细信息¶
选择表达式和搜索表达式的排序规则规范必须全部兼容。
从函数返回的值保留具有最高 优先级 排序规则的结果的排序规则规范。
示例¶
创建表并插入行:
CREATE TABLE d (column1 INTEGER); INSERT INTO d (column1) VALUES (1), (2), (NULL), (4);
默认值为 '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 | +---------+---------------+
没有默认值的示例(请注意,不匹配的值返回 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 | +---------+---------------+