oracle case when和decode怎么套用
时间: 2023-11-02 09:40:21 浏览: 74
Oracle中的CASE和DECODE函数都可以用于根据条件返回不同的值。
使用CASE函数:
CASE WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
ELSE default_result
END
使用DECODE函数:
DECODE(expression, value1, result1, value2, result2, ..., default_result)
其中,expression是要比较的表达式,value1、value2等是可能的取值,result1、result2等是对应取值的结果,default_result是当表达式不等于任何value时返回的默认结果。
例如,将一个列中的值为1替换成'A',值为2替换成'B',其余值替换成'C',可以使用以下两种方法:
使用CASE函数:
SELECT CASE WHEN column = 1 THEN 'A'
WHEN column = 2 THEN 'B'
ELSE 'C'
END
FROM table_name
使用DECODE函数:
SELECT DECODE(column, 1, 'A', 2, 'B', 'C')
FROM table_name
相关问题
oracle decode和case when效率
Oracle的DECODE和CASE WHEN都是用于条件判断的函数,它们的效率取决于使用的场景和数据量。在某些情况下,DECODE可能比CASE WHEN更高效,而在其他情况下,CASE WHEN可能更高效。
DECODE函数通常用于简单的条件判断,当需要将一个值与多个可能的值进行比较时,DECODE可以提供更简洁的语法。例如:
```
SELECT DECODE(status, 1, 'Active', 2, 'Inactive', 'Unknown') FROM employees;
```
该查询将根据status列的值返回相应的文本值。如果status为1,则返回“Active”,如果为2,则返回“Inactive”,否则返回“Unknown”。
在这种情况下,DECODE可能比CASE WHEN更高效,因为它只需要比较一个值,而不是多个值。
但是,在其他情况下,CASE WHEN可能更高效。例如,当需要比较多个条件时,CASE WHEN可以提供更灵活的选项。例如:
```
SELECT CASE WHEN salary < 50000 THEN 'Low'
WHEN salary < 100000 THEN 'Medium'
ELSE 'High' END
FROM employees;
```
该查询将根据salary列的值返回相应的文本值。如果salary小于50000,则返回“Low”,如果在50000和100000之间,则返回“Medium”,否则返回“High”。
在这种情况下,因为需要比较多个条件,使用CASE WHEN可能比DECODE更高效。
ORACLE 中DECODE和 CASE WHEN函数使用方式
在 Oracle 中,DECODE 和 CASE WHEN 都是用于条件判断和值转换的函数。下面是它们的使用方式:
DECODE 函数:
DECODE 函数接受三个或多个参数。它将第一个参数与后续每对参数进行比较。如果第一个参数等于某个值,则返回相应的第二个参数。如果第一个参数不等于任何值,则返回最后一个参数(可选)。例如:
```
SELECT DECODE(salary, 1000, 'Low', 2000, 'Medium', 'High') AS SalaryLevel
FROM employees;
```
上面的代码将根据 employees 表中的 salary 值返回相应的薪资级别。
CASE WHEN 函数:
CASE WHEN 函数是一种更通用的条件表达式。它可以包含任意数量的 WHEN 子句,每个子句都包含一个条件和相应的结果。它还可以包含一个 ELSE 子句,用于指定当所有 WHEN 子句都不匹配时的默认结果。例如:
```
SELECT CASE WHEN salary < 1000 THEN 'Low'
WHEN salary < 2000 THEN 'Medium'
ELSE 'High'
END AS SalaryLevel
FROM employees;
```
上面的代码将根据 employees 表中的 salary 值返回相应的薪资级别。如果 salary 小于 1000,则返回 'Low';如果 salary 大于等于 1000 且小于 2000,则返回 'Medium';否则返回 'High'。
阅读全文