mysql-函數CASE WHEN 語句使用說明


mysql數據庫中CASE WHEN語句。

case when語句,用於計算條件列表並返回多個可能結果表達式之一。

CASE 具有兩種格式:

簡單 CASE 函數將某個表達式與一組簡單表達式進行比較以確定結果。
CASE 可能是 SQL 中被誤用最多的關鍵字之一。雖然你可能以前用過這個關鍵字來創建字段,但是它還具有更多用法。例如,你可以在 WHERE 子句中使用CASE。

CASE 搜索函數計算一組布爾表達式以確定結果。 兩種格式都支持可選的 ELSE 參數。

語法
簡單 CASE 函數:

CASE input_expression
    WHEN when_expression THEN result_expression
        [ ...n ]
        ELSE else_result_expression
    END

 

參數

input_expression
  是使用簡單
CASE 格式時所計算的表達式。Input_expression 是任何有效的 Microsoft? SQL Server? 表達式。 WHEN when_expression
  使用簡單
CASE 格式時 input_expression 所比較的簡單表達式。When_expression 是任意有效的 SQL Server 表達式。Input_expression 和每個 when_expression 的數據類型必須相同,或者是隱性轉換。占位符,表明可以使用多個 WHEN when_expression THEN result_expression 子句或 WHEN Boolean_expression THEN result_expression 子句。 THEN result_expression:
  當 input_expression
= when_expression 取值為 TRUE,或者 Boolean_expression 取值為 TRUE 時返回的表達式。result expression 是任意有效的 SQL Server 表達式。 ELSE else_result_expression
  當比較運算取值不為 TRUE 時返回的表達式。如果省略此參數並且比較運算取值不為 TRUE,
CASE 將返回 NULL 值。Else_result_expression 是任意有效的 SQL Server 表達式。Else_result_expression 和所有 result_expression 的數據類型必須相同,或者必須是隱性轉換。 WHEN Boolean_expression
  使用
CASE 搜索格式時所計算的布爾表達式。Boolean_expression 是任意有效的布爾表達式。

結果類型從 result_expressions 和可選 else_result_expression 的類型集合中返回最高的優先規則類型。有關更多信息,請參見數據類型的優先順序。 結果值 簡單
CASE 函數: 計算 input_expression,然后按指定順序對每個 WHEN 子句的 input_expression = when_expression 進行計算。 返回第一個取值為 TRUE 的 (input_expression = when_expression) 的 result_expression。 如果沒有取值為 TRUE 的 input_expression = when_expression,則當指定 ELSE 子句時 SQL Server 將返回 else_result_expression;若沒有指定 ELSE 子句,則返回 NULL 值。
CASE 搜索函數: 按指定順序為每個 WHEN 子句的 Boolean_expression 求值。 返回第一個取值為 TRUE 的 Boolean_expression 的 result_expression。 如果沒有取值為 TRUE 的 Boolean_expression,則當指定 ELSE 子句時 SQL Server 將返回 else_result_expression;若沒有指定 ELSE 子句,則返回 NULL 值。 下面分享一些mysql case when語句的例子。

 

在一般的 SELECT 中,其語法如下: 
sql 中 case when 語法在這里添加日志標題 - 錢途無梁 - Notebook of 錢途無梁 

SELECT <myColumnSpec> = 
CASE 
WHEN <A> THEN <somethingA> 
WHEN <B> THEN <somethingB> 
ELSE <somethingE> 
END 

在上面的代碼中需要用具體的參數代替尖括號中的內容。下面是一個簡單的例子: 

SELECT 
     Title, 
    'Price Range' = 
    CASE 
        WHEN price IS NULL THEN 'Unpriced' 
        WHEN price < 10 THEN 'Bargain' 
        WHEN price BETWEEN 10 and 20 THEN 'Average' 
        ELSE 'Gift to impress relatives' 
    END 
FROM titles 
ORDER BY price

 

這是 CASE 的典型用法,但是使用 CASE 其實可以做更多的事情。比方說下面的 GROUP BY 子句中的 CASE: 

SELECT 'Number of Titles', Count(*) 
FROM titles 
GROUP BY 
CASE 
WHEN price IS NULL THEN 'Unpriced' 
WHEN price < 10 THEN 'Bargain' 
WHEN price BETWEEN 10 and 20 THEN 'Average' 
ELSE 'Gift to impress relatives' 
END 
GO 

 



你甚至還可以組合這些選項,添加一個 ORDER BY 子句,如下所示:

USE pubs 
GO 
SELECT 
CASE 
WHEN price IS NULL THEN 'Unpriced' 
WHEN price < 10 THEN 'Bargain' 
WHEN price BETWEEN 10 and 20 THEN 'Average' 
ELSE 'Gift to impress relatives' 
END AS Range, 
Title 
FROM titles 
GROUP BY 
CASE 
WHEN price IS NULL THEN 'Unpriced' 
WHEN price < 10 THEN 'Bargain' 
WHEN price BETWEEN 10 and 20 THEN 'Average' 
ELSE 'Gift to impress relatives' 
END, 
Title 
ORDER BY 
CASE 
WHEN price IS NULL THEN 'Unpriced' 
WHEN price < 10 THEN 'Bargain' 
WHEN price BETWEEN 10 and 20 THEN 'Average' 
ELSE 'Gift to impress relatives' 
END, 
Title 
GO 

 

注意,為了在 GROUP BY 塊中使用 CASE,查詢語句需要在 GROUP BY 塊中重復 SELECT 塊中的 CASE 塊。

 

 

 

一篇文章http://www.jb51.net/article/28680.htm

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM