oracle 什么函数可以替换 case when
时间: 2024-09-20 17:00:20 浏览: 60
Oracle 技巧
Oracle数据库中,`CASE`表达式是一种常用的条件判断结构,它可以实现类似其他语言中的`if...then...else`语句。如果你想在 Oracle 中寻找一种功能类似的函数,可以考虑使用 `DECODE` 函数或者 `NVL` 函数结合使用。
`DECODE` 函数类似于 SQL Server 的 `IIF` 或 `CASE`,它接受三个参数:测试条件、真值结果和假值结果。例如:
```sql
SELECT NVL(val, 'default') AS result
FROM your_table
DECODE(val, 'A', 'Value A', 'B', 'Value B', 'default');
```
`NVL` 函数则是当某个值为空(NULL)时提供默认值,可以这样替代部分 `CASE` 语句:
```sql
SELECT val
FROM your_table
WHERE val IS NOT NULL
UNION ALL
SELECT 'default_value'
FROM your_table
WHERE val IS NULL;
```
如果只需要简单的返回不同值,还可以只用 `NVL`:
```sql
SELECT NVL(val, 'default_value')
FROM your_table;
```
阅读全文