SQL WHEN CASE:完整指南

最後更新: 十月20 2025
SQL 當案例

SQL,即結構化查詢語言,是管理和操作關聯式資料庫的強大工具。 SQL 最有價值的特性之一是其處理條件語句的能力。條件語句可讓您根據特定條件指定不同的操作,從而為查詢提供靈活性和控制力。在 SQL 的各種條件語句中,WHEN CASE 語句以其多功能性和高效性脫穎而出。它允許您在查詢中執行條件邏輯,使其成為 SQL 工具包中不可或缺的資源。

SQL WHEN CASE:探索基礎知識

要充分發揮 SQL WHEN CASE 語句的潛力,了解其基本語法和功能非常重要。 SQL WHEN CASE 語句主要用於執行條件評估並根據滿足的條件傳回特定結果。讓我們來看看SQL WHEN CASE語句的基本結構:

SELECT columna1,
       columna2,
       (CASE
           WHEN condicion1 THEN resultado1
           WHEN condicion2 THEN resultado2
           ELSE resultado
        END) AS alias
FROM nombre_tabla;

在上面的語法中, columna1 y columna2 表示您想要從指定表中檢索的列。關鍵字 CASE 開始條件評估,然後是一系列條件 WHEN 及其相應的結果。該條款 ELSE 如果任何條件均不滿足,則提供預設結果。最後,關鍵字 END 結束條件句。評估結果被賦予別名,以方便參考。

深入了解 SQL WHEN CASE

現在我們已經介紹了 SQL WHEN CASE 語句的基本結構,讓我們更詳細地探討它的不同面向。透過深入研究其應用、變化和最佳實踐,我們可以充分利用這個強大的條件語句的潛力。

1. SQL WHEN CASE 用於簡單條件評估

SQL WHEN CASE 語句最簡單的使用案例是執行直接條件評估。透過指定條件和對應的結果,您可以有效控制查詢結果。請考慮以下範例:

SELECT id_pedido,
       fecha_pedido,
       (CASE
           WHEN monto_total > 1000 THEN 'Pedido de alto valor'
           ELSE 'Pedido estándar'
        END) AS categoria_pedido
FROM pedidos;

在此範例中,我們檢索列 id_pedido y fecha_pedido 從表中 pedidos。句子 CASE 評估列 monto_total如果總金額超過 1000,則賦值為‘高價值訂單’,否則賦值為‘標準訂單’。結果以別名顯示 categoria_pedido.

2. 使用 SQL WHEN CASE 和聚合函數

SQL WHEN CASE 語句也可以與聚合函數結合使用來執行條件計算。這使得你可以根據特定條件動態計算值。請考慮以下情況:

  分散式資料庫:它們是什麼、類型和優勢

你有一張叫做 empleados 與列 id_empleado, nombre, apellido y salario。您想要計算員工的平均工資,但不包括低於特定門檻的工資。以下是使用 SQL WHEN CASE 語句實現此目的的方法:

SELECT (CASE
           WHEN salario > 50000 THEN salario
           ELSE NULL
        END) AS salario_filtrado,
       AVG(salario) AS salario_promedio
FROM empleados;

在此範例中,語句 CASE 評估列 salario,如果工資超過 50000,則分配工資價值,並且 NULL 否則。函數 AVG 用於計算平均工資,排除過濾後的工資。這使您可以更好地控制聚合計算,從而可以過濾掉不需要的資料。

3.使用 SQL WHEN CASE 處理多個條件

在某些情況下,您可能需要在單一 SQL WHEN CASE 語句中評估多個條件。幸運的是,SQL 提供了一種簡單的方法來處理這種情況。透過組合多個條件 WHEN 及其相應的結果,您可以建立複雜的條件評估。請考慮以下範例:

SELECT nombre_producto,
       precio_unitario,
       (CASE
           WHEN precio_unitario > 50 THEN 'Costoso'
           WHEN precio_unitario > 20 THEN 'Moderado'
           ELSE 'Accesible'
        END) AS categoria_precio
FROM productos;

在此範例中,語句 CASE 評估列 precio_unitario 並分配相應的價格類別 視情況而定 已實現。透過有效地建立您的條件,您可以處理不同的場景並相應地對資料進行分類。

4. JOIN 運算中的 SQL WHEN CASE

SQL WHEN CASE 語句也可以用於 JOIN 運算中,讓您可以根據特定條件有條件地連接表格。這使得資料檢索更加動態和靈活。考慮以下場景:

  資料庫歷史:完整指南

你有兩塊板, clientes y pedidos,具有共同的列 id_cliente。您想要檢索客戶資訊以及對應訂單的狀態。以下說明如何使用 SQL WHEN CASE 語句來實現此目的:

SELECT c.id_cliente,
       c.nombre_cliente,
       p.estado_pedido
FROM clientes c
JOIN pedidos p ON c.id_cliente = p.id_cliente
WHERE (CASE
           WHEN p.estado_pedido = 'Enviado' THEN 1
           ELSE 0
        END) = 1;

在此範例中,語句 CASE 它用於 條款 WHERE 有條件地過濾 桌子連在一起。僅退回訂單狀態為「已出貨」的行,為您提供更具體、更相關的結果。

SQL WHEN CASE 常見問題解答

  1. SQL WHEN CASE 語句的用途是什麼? 它用於執行條件評估並根據滿足的條件返回特定結果。提供靈活性和 控制 SQL 查詢,讓您有效地處理不同的情況。
  2. 我可以在單一 SQL WHEN CASE 語句中使用多個 WHEN 條件嗎? 是的,你可以使用多個條件 WHEN 在單一 SQL WHEN CASE 語句中。透過組合多個條件及其對應的結果,您可以建立複雜的條件評估。
  3. SQL WHEN CASE 語句中的 ELSE 子句是強制性的嗎? 不,SQL WHEN CASE 語句中的 ELSE 子句不是強制性的。但是,建議包含 ELSE 子句,以便在任何條件均不滿足時提供預設結果。
  4. 我可以將 SQL WHEN CASE 語句與聚合函數一起使用嗎? 是的,您可以使用具有聚合函數的 SQL WHEN CASE 語句執行條件計算。這使得你可以根據特定條件動態計算值。
  5. SQL WHEN CASE 語句只適用於 SELECT 語句嗎? 不是,SQL WHEN CASE 語句可用於 SQL 查詢的各個部分,包括 SELECT、WHERE 語句和 JOIN 運算。它使您可以靈活地有條件地控制 您的查詢的不同方面.
  6. 使用 SQL WHEN CASE 語句時是否有任何效能考量? 雖然此語句是一個強大的工具,但考慮其對查詢效能的影響非常重要。與任何條件語句一樣,過多或複雜的評估會影響查詢執行時間。建議嘗試 最佳化查詢 以獲得最佳性能。
  客戶端伺服器資料庫架構:完整指南

結論

SQL WHEN CASE 語句是 SQL 開發人員工具箱中不可或缺的工具。它能夠執行條件判斷並返回特定結果,使您能夠輕鬆準確地處理各種不同的場景。透過掌握 SQL 條件語句的技巧,您可以提升資料庫管理技能,並解鎖資料操作的新可能性。