Oracle 中 Case When 有哪些用法

2025-01-14 21:30:52   小编

Oracle 中 Case When 有哪些用法

在 Oracle 数据库中,Case When 语句是一个非常强大且灵活的工具,它允许我们在查询中进行条件判断和逻辑分支处理。下面将详细介绍它的几种常见用法。

简单 Case When 语句

简单 Case When 语句用于对一个表达式进行多种不同值的判断。语法格式为:

CASE expression
    WHEN value1 THEN result1
    WHEN value2 THEN result2
    ELSE result3
END

例如,有一个员工表 employees,包含 department_id 字段。我们想要根据部门 ID 输出部门名称:

SELECT employee_id, department_id,
    CASE department_id
        WHEN 10 THEN 'Administration'
        WHEN 20 THEN 'Marketing'
        ELSE 'Other'
    END AS department_name
FROM employees;

这里通过简单 Case When 语句,根据 department_id 的值输出对应的部门名称。

搜索 Case When 语句

搜索 Case When 语句可以对多个条件进行复杂的逻辑判断。语法格式为:

CASE
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    ELSE result3
END

例如,在员工表中,我们想根据员工的薪资划分等级:

SELECT employee_id, salary,
    CASE
        WHEN salary <= 5000 THEN 'Low'
        WHEN salary <= 10000 THEN 'Medium'
        ELSE 'High'
    END AS salary_level
FROM employees;

此例中,搜索 Case When 语句根据薪资的范围判断并输出相应的薪资等级。

在聚合函数中使用 Case When

Case When 语句还能在聚合函数中发挥作用。比如,统计不同部门的员工数量:

SELECT
    SUM(CASE WHEN department_id = 10 THEN 1 ELSE 0 END) AS dept_10_count,
    SUM(CASE WHEN department_id = 20 THEN 1 ELSE 0 END) AS dept_20_count
FROM employees;

这里利用 Case When 语句在 SUM 函数中进行条件计数,分别统计了部门 ID 为 10 和 20 的员工数量。

更新数据时使用 Case When

UPDATE 语句中,Case When 语句可以根据条件更新不同的值。例如,要调整员工薪资:

UPDATE employees
SET salary =
    CASE
        WHEN department_id = 10 THEN salary * 1.1
        WHEN department_id = 20 THEN salary * 1.2
        ELSE salary
    END;

此语句根据部门 ID 对员工薪资进行不同比例的调整。

Oracle 中的 Case When 语句在数据查询、统计分析以及数据更新等方面都有广泛应用,熟练掌握它能极大地提升我们处理数据库逻辑的能力。

TAGS: Oracle数据库 SQL技巧 Oracle_Case_When Case_When语法

欢迎使用万千站长工具!

Welcome to www.zzTool.com