SQL中的CASE WHEN语句

CASE WHEN语句是SQL中非常重要的一种条件语句,它的作用类似于if-else语句。在查询数据时,我们经常需要根据不同条件对数据进行筛选和操作,这时候就可以用到CASE WHEN语句。本文将从各个方面详细讲解SQL中的CASE WHEN语句。

一、基础语法

SQL中的CASE WHEN语句用法类似于以下代码:

CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
WHEN condition3 THEN result3
…
ELSE default_result
END

以上代码中,condition1、condition2、condition3等都是条件语句,result1、result2、result3等是对应的结果语句。当condition1成立,返回result1;当condition2成立,返回result2;以此类推。如果所有的条件都不成立,则返回default_result。

以下是一个简单的例子:

SELECT first_name, last_name,
CASE gender
WHEN 'M' THEN 'Male'
WHEN 'F' THEN 'Female'
ELSE 'Unknown'
END AS gender_full
FROM customers;

以上代码把gender字段中的’M’转换成’Male’,把’F’转换成’Female’,其余的值都转换成’Unknown’。

二、使用CASE WHEN进行聚合操作

CASE WHEN语句也可以用来进行聚合操作。例如,我们要统计每个订单的数量,并且按照数量的不同情况进行分类,可以使用如下代码:

SELECT 
CASE
    WHEN count(*) >= 10 THEN '10 or more'
    WHEN count(*) >= 5 THEN '5 - 9'
    WHEN count(*) >= 1 THEN '1 - 4'
    ELSE '0'
END AS order_quantity,
count(*) AS order_count
FROM orders
GROUP BY order_quantity;

以上代码把订单数量分为4个类别:10个或以上、5到9个、1到4个和0个。并统计每个类别的订单数量。

三、嵌套CASE WHEN语句

在复杂的查询中,有时候需要嵌套CASE WHEN语句。例如,我们要把订单按照数量分为不同的类别,并且根据类别进行打折,可以使用如下代码:

SELECT order_id, order_date, order_quantity,
CASE order_quantity
    WHEN '10 or more' THEN
        CASE
            WHEN order_total >= 1000 THEN order_total*0.8
            WHEN order_total >= 500 THEN order_total*0.9
            ELSE order_total
        END
    WHEN '5 - 9' THEN
        CASE
            WHEN order_total >= 500 THEN order_total*0.9
            ELSE order_total
        END
    WHEN '1 - 4' THEN
        CASE
            WHEN order_total >= 100 THEN order_total*0.95
            ELSE order_total
        END
    ELSE order_total
END AS discounted_total
FROM orders;

以上代码把订单按照数量分为4个类别,并且根据每个类别的不同条件进行打折操作。

四、使用CASE WHEN进行条件过滤

在查询数据时,有时候需要根据条件进行过滤。如果使用WHERE语句进行过滤,可能会使查询语句过于复杂。这时候就可以用到CASE WHEN语句。例如,我们要查询2019年4月15日以后的订单,可以使用如下代码:

SELECT order_id, order_date, order_total
FROM orders
WHERE 
CASE WHEN order_date >= '2019-04-15' THEN 1 ELSE 0 END = 1;

以上代码使用CASE WHEN语句对数据进行了筛选,只返回符合条件的数据。

五、使用CASE WHEN进行数据替换

除了上述用法之外,CASE WHEN语句还可以用来进行数据替换。例如,我们要把一个字符串中的某些文字替换成其他文字,可以使用如下代码:

SELECT order_id, 
REPLACE(product_name, 'Coca Cola', 'Pepsi') AS new_product_name
FROM order_details;

以上代码将order_details表中product_name字段中的’Coca Cola’替换为’Pepsi’。

六、总结

本文从多个方面详细讲解了SQL中的CASE WHEN语句。CASE WHEN语句不仅在对数据进行筛选和操作时非常有用,而且还可以用来进行聚合操作、嵌套和数据替换。在进行复杂的查询时,CASE WHEN语句是非常有用的工具。

原创文章,作者:RUEG,如若转载,请注明出处:https://www.506064.com/n/149054.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
RUEGRUEG
上一篇 2024-11-04 17:52
下一篇 2024-11-04 17:52

相关推荐

  • Python3支持多行语句

    Python3是一种高级编程语言,开发人员可以轻松地使用该语言编写简单到复杂的代码。其中Python3支持多行语句,方便开发人员编写复杂的代码,提高代码的可读性和可维护性。 一、使…

    编程 2025-04-29
  • Python for循环语句打印九九乘法表

    本篇文章将详细介绍如何使用Python的for循环语句打印九九乘法表。打印九九乘法表是我们初学Python时经常练习的一项基础操作,也是编写Python程序的基本能力之一。 1、基…

    编程 2025-04-29
  • Hibernate日志打印sql参数

    本文将从多个方面介绍如何在Hibernate中打印SQL参数。Hibernate作为一种ORM框架,可以通过打印SQL参数方便开发者调试和优化Hibernate应用。 一、通过配置…

    编程 2025-04-29
  • Python中while语句和for语句的区别

    while语句和for语句是Python中两种常见的循环语句,它们都可以用于重复执行一段代码。然而,它们的语法和适用场景有所不同。本文将从多个方面详细阐述Python中while语…

    编程 2025-04-29
  • 使用SQL实现select 聚合查询结果前加序号

    select语句是数据库中最基础的命令之一,用于从一个或多个表中检索数据。常见的聚合函数有:count、sum、avg等。有时候我们需要在查询结果的前面加上序号,可以使用以下两种方…

    编程 2025-04-29
  • Python中自定义函数必须有return语句

    自定义函数是Python中最常见、最基本也是最重要的语句之一。在Python中,自定义函数必须有明确的返回值,即必须要有return语句。本篇文章将从以下几个方面对此进行详细阐述。…

    编程 2025-04-29
  • 理解Mybatis中的SQL Limit用法

    Mybatis是一种非常流行的ORM框架,提供了SQL映射配置文件,可以使用类似于传统SQL语言的方式编写SQL语句。其中,SQL的Limit语法是一个非常重要的知识点,能够实现分…

    编程 2025-04-29
  • Python中升序排列的if语句

    本文将为大家介绍Python中升序排列的if语句。首先,我们来看一下如何实现。 if a > b: a, b = b, a if b > c: b, c = c, b …

    编程 2025-04-29
  • SQL预研

    SQL预研是指在进行SQL相关操作前,通过数据分析和理解,确定操作的方法和步骤,从而避免不必要的错误和问题。以下从多个角度进行详细阐述。 一、数据分析 数据分析是SQL预研的第一步…

    编程 2025-04-28
  • Python输出语句用法介绍

    Python作为一种高级编程语言,为编程带来了极大的便利和快捷。而输出语句则是Python编程中不可缺少的一部分,它能够让我们看到程序运行的结果、判断程序的正确性和优化程序等。本文…

    编程 2025-04-28

发表回复

登录后才能评论