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/zh-hk/n/149054.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
RUEG的頭像RUEG
上一篇 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

發表回復

登錄後才能評論