Skip to content

适用虚谷数据库版本

v12.9



适用虚谷数据库版本

v12.9


DECODE

📄字数 847
👁️阅读量 加载中...

功能描述

DECODEexpr 与每个 search 值逐一进行比较。如果 expr 等于 search,则返回对应的 result;否则返回 default,如果省略 default,则返回 NULL

语法格式

sql
DECODE(expr, search, result[, search, result, ...][, default])

输入参数

  • expr: 支持所有数据类型。

提示

  • 参数 exprsearch 的类型,需保持一致;或者相互之间可以进行隐式转换;或者能找到两者进行比较操作时的公共类型。
  • 参数 resultdefault 的类型,需保持一致;或者相互之间可以进行隐式转换;或者能找到两者进行比较操作时的公共类型。

输出结果

  • resultdefault 类型相同,则返回 result 的类型。
  • 若任意一个类型为 NULL,则返回另一个类型。
  • resultdefault 其中一个参数为 VARCHAR 类型,则返回另一个参数的类型(如果另外一个参数的类型为整型,则固定返回 BIGINT 类型)。
  • resultdefault 其中一个参数为 BOOLEAN 类型,并且另一个参数的类型可以转换为 BOOLEAN 类型,则固定返回 BOOLEAN 类型。
  • resultdefault 其中一个参数为 BIT 类型,并且另一个参数的类型为 VARBIT 类型,则返回 VARBIT 类型。
  • resultdefault 其中一个参数的类型可以转换为另一个参数的类型,则返回另一个参数的类型(可以向更高ID的类型转换)。

示例

sql
-- 比较 '测试TEST' 和 '测试TENT' 两个字符串的内容,相等则返回 10,否则返回 11.258
SQL> SELECT DECODE('测试TEST', '测试TENT', 10, 11.258);

+--------+
| EXPR1  |
+--------+
| 11.258 |
+--------+

-- 比较 '2025-10-31' 和 '2025-10-31 12:30:10' 两个日期是否相等,相等则返回 '相等',否则返回 '不相等'
SQL> SELECT DECODE('2025-10-31'::DATE, '2025-10-31 12:30:10'::DATE, '相等', '不相等');

+-------+
| EXPR1 |
+-------+
| 相等  |
+-------+

-- 多个条件进行比较
SQL> SELECT DECODE(1.9, 2.1, '1', 2.0, 2, 1.9, 3,'0');

+-------+
| EXPR1 |
+-------+
| 3     |
+-------+