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 |
+-------+