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