SQL语句case when then else end用法

简介: SQL语句case when then else end用法

什么是CASE WHEN THEN ELSE END?

在SQL中,CASE WHEN THEN ELSE END是一种条件表达式,用于根据不同的条件执行不同的操作。它的基本结构如下:

CASE
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    ...
    ELSE default_result
END

在这个结构中,根据条件的成立与否,系统将选择执行相应的操作。如果所有条件都不成立,系统将执行ELSE后的默认操作。

基本用法示例

让我们通过一些简单的示例来理解CASE WHEN THEN ELSE END的基本用法。

-- 示例1:根据学生成绩判断等级
SELECT
    CASE
        WHEN score >= 90 THEN 'A'
        WHEN score >= 80 THEN 'B'
        WHEN score >= 70 THEN 'C'
        ELSE 'D'
    END AS grade
FROM students;

在这个示例中,根据学生成绩的不同,使用CASE语句判断其等级并返回相应的结果。

-- 示例2:将性别代码翻译为文字描述
SELECT
    CASE gender_code
        WHEN 'M' THEN 'Male'
        WHEN 'F' THEN 'Female'
        ELSE 'Unknown'
    END AS gender
FROM employees;

在这个示例中,通过CASE语句将性别代码翻译为可读的文字描述。

多条件判断与嵌套CASE语句

CASE语句支持多条件判断,也可以嵌套使用。以下是一些示例:

-- 示例3:根据订单状态和支付状态返回订单处理结果
SELECT
    CASE
        WHEN order_status = 'Canceled' THEN 'Order Canceled'
        WHEN order_status = 'Shipped' AND payment_status = 'Paid' THEN 'Order Shipped and Paid'
        WHEN order_status = 'Shipped' AND payment_status = 'Pending' THEN 'Order Shipped, Payment Pending'
        ELSE 'Unknown'
    END AS order_result
FROM orders;

在这个示例中,通过多条件判断,根据订单的状态和支付状态返回相应的订单处理结果。

-- 示例4:嵌套CASE语句,判断学生成绩段
SELECT
    CASE
        WHEN score >= 90 THEN 'A'
        WHEN score >= 80 THEN 'B'
        ELSE
            CASE
                WHEN score >= 70 THEN 'C'
                ELSE 'D'
            END
    END AS grade
FROM students;

在这个示例中,通过嵌套的CASE语句,判断学生成绩段并返回相应的等级。

使用CASE语句进行数据转换与处理

除了条件判断,CASE语句还常用于数据转换和处理。

-- 示例5:将日期字段转换为季度
SELECT
    CASE
        WHEN MONTH(order_date) BETWEEN 1 AND 3 THEN 'Q1'
        WHEN MONTH(order_date) BETWEEN 4 AND 6 THEN 'Q2'
        WHEN MONTH(order_date) BETWEEN 7 AND 9 THEN 'Q3'
        WHEN MONTH(order_date) BETWEEN 10 AND 12 THEN 'Q4'
    END AS order_quarter
FROM orders;

在这个示例中,通过CASE语句将订单日期字段转换为相应的季度。

-- 示例6:对数据进行分类汇总
SELECT
    category,
    COUNT(*) AS total_count,
    SUM(
        CASE
            WHEN status = 'Completed' THEN 1
            ELSE 0
        END
    ) AS completed_count
FROM products
GROUP BY category;

在这个示例中,通过CASE语句对数据进行分类汇总,统计各个类别的总数和已完成的数量。

小结

通过本文的介绍,相信你对SQL中的CASE WHEN THEN ELSE END语句有了更深入的了解。它不仅在条件判断上发挥着巨大的作用,还能够在数据转换和处理中提供更灵活的操作手段。在实际应用中,善用CASE语句将使你的SQL查询更为高效和易读。

相关文章
|
4月前
|
SQL 分布式计算 DataWorks
DataWorks产品使用合集之如何在SQL语句里使用CASE WHEN语句
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
3月前
|
SQL XML Java
mybatis复习03,动态SQL,if,choose,where,set,trim标签及foreach标签的用法
文章介绍了MyBatis中动态SQL的用法,包括if、choose、where、set和trim标签,以及foreach标签的详细使用。通过实际代码示例,展示了如何根据条件动态构建查询、更新和批量插入操作的SQL语句。
mybatis复习03,动态SQL,if,choose,where,set,trim标签及foreach标签的用法
|
3月前
|
SQL 存储 安全
SQL Server用法
SQL Server用法
75 1
|
3月前
|
SQL XML Java
mybatis :sqlmapconfig.xml配置 ++++Mapper XML 文件(sql/insert/delete/update/select)(增删改查)用法
当然,这些仅是MyBatis功能的初步介绍。MyBatis还提供了高级特性,如动态SQL、类型处理器、插件等,可以进一步提供对数据库交互的强大支持和灵活性。希望上述内容对您理解MyBatis的基本操作有所帮助。在实际使用中,您可能还需要根据具体的业务要求调整和优化SQL语句和配置。
53 1
|
3月前
|
SQL
SQL: 巧妙使用CASE WHEN实现查询
文章演示了如何利用SQL中的CASE WHEN语句来有效地进行条件性聚合查询,通过具体示例展示了CASE WHEN在统计分析中的应用技巧。
71 0
|
4月前
|
SQL 关系型数据库 MySQL
8、SQL高级用法
8、SQL高级用法
19 0
|
5月前
|
SQL Java 数据库连接
SQL SELECT语句的基本用法
SQL SELECT语句的基本用法
|
3月前
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
|
5月前
|
SQL 存储 监控
SQL Server的并行实施如何优化?
【7月更文挑战第23天】SQL Server的并行实施如何优化?
116 13
|
5月前
|
SQL
解锁 SQL Server 2022的时间序列数据功能
【7月更文挑战第14天】要解锁SQL Server 2022的时间序列数据功能,可使用`generate_series`函数生成整数序列,例如:`SELECT value FROM generate_series(1, 10)。此外,`date_bucket`函数能按指定间隔(如周)对日期时间值分组,这些工具结合窗口函数和其他时间日期函数,能高效处理和分析时间序列数据。更多信息请参考官方文档和技术资料。