DECODE
📄字数 847
👁️阅读量 加载中...
功能描述
DECODE
将 expr
与每个 search
值逐一进行比较。如果 expr
等于 search
,则返回对应的 result
;否则返回 default
,如果省略 default
,则返回 NULL
。
语法格式
sql
DECODE(expr, search, result[, search, result, ...][, default])
输入参数
expr
: 支持所有数据类型。
提示
- 参数
expr
和search
的类型,需保持一致;或者相互之间可以进行隐式转换;或者能找到两者进行比较操作时的公共类型。 - 参数
result
和default
的类型,需保持一致;或者相互之间可以进行隐式转换;或者能找到两者进行比较操作时的公共类型。
输出结果
- 若
result
和default
类型相同,则返回result
的类型。 - 若任意一个类型为
NULL
,则返回另一个类型。 - 若
result
和default
其中一个参数为VARCHAR
类型,则返回另一个参数的类型(如果另外一个参数的类型为整型,则固定返回BIGINT
类型)。 - 若
result
和default
其中一个参数为BOOLEAN
类型,并且另一个参数的类型可以转换为BOOLEAN
类型,则固定返回BOOLEAN
类型。 - 若
result
和default
其中一个参数为BIT
类型,并且另一个参数的类型为VARBIT
类型,则返回VARBIT
类型。 - 若
result
和default
其中一个参数的类型可以转换为另一个参数的类型,则返回另一个参数的类型(可以向更高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 |
+-------+