跳到主要内容

DECODE

DECODE 函数按顺序将选择表达式与每个搜索表达式进行比较。一旦搜索表达式与选择表达式匹配,就返回相应的结果表达式。如果没有找到匹配项且提供了默认值,则返回默认值。

语法

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

参数

  • expr: 与每个搜索表达式进行比较的"选择表达式"。通常是一个列,但也可以是子查询、字面量或其他表达式。
  • searchN: 与选择表达式进行比较的搜索表达式。如果找到匹配项,则返回相应的结果。
  • resultN: 如果相应的搜索表达式与选择表达式匹配,将返回的值。
  • default: 可选。如果提供且没有搜索表达式匹配,则返回此默认值。

使用说明

  • CASE 不同,选择表达式中的 NULL 值与搜索表达式中的 NULL 值匹配。
  • 如果多个搜索表达式匹配,只返回第一个匹配项的结果。

示例

CREATE TABLE t (a VARCHAR);
INSERT INTO t (a) VALUES
('1'),
('2'),
(NULL),
('4');

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

SELECT a, decode(a,
1, 'one',
2, 'two',
NULL, '-NULL-',
'other'
) AS decode_result
FROM t;

结果:

┌─a─┬─decode_result─┐
│ 1 │ one │
│ 2 │ two │
│ │ -NULL- │
│ 4 │ other │
└───┴───────────────┘
开始使用 Databend Cloud
低成本
快速分析
多种数据源
弹性扩展
注册