萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> MySQL中case when 語句條件查詢的方法

MySQL中case when 語句條件查詢的方法

case
計算條件列表並返回多個可能結果表達式之一。

case 具有兩種格式:

簡單 case 函數將某個表達式與一組簡單表達式進行比較以確定結果。


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

語法
簡單 case 函數:

case input_expression
    when when_expression then result_expression
        [ ...n ]
    [
        else else_result_expression
    end

case 搜索函數:

case
    when boolean_expression then result_expression
        [ ...n ]
    [
        else else_result_expression
    end


例如,下面的語句顯示中文年月
select getdate() as 日期,case month(getdate())
when 11 then '十一'
when 12 then '十二'
else substring('一二三四五六七八九十', month(getdate()),1)
end+'月' as 月份

下面看個實例


數據表為demotable,字段有id, condition1,condition2,condition3,condition4,condition5

要求是查詢demotable中,condition1,condition2,condition3,condition4,condition5五個字段中符合任意兩個或兩個以上的條件的內容。

可使用case when來實現這個條件,需要嵌套子查詢語句

sql語句代碼示例如下:
復制代碼 代碼如下:
select * from demotable
where ((select case 1 when condition1滿足條件 then 1 else 0 end from demotable )
+(select case 1 when condition2滿足條件 then 1 else 0 end from demotable)
+(select case 1 when condition3滿足條件 then 1 else 0 end from demotable)
+(select case 1 when condition4滿足條件 then 1 else 0 end from demotable)
+(select case 1 when condition5滿足條件 then 1 else 0 end from demotable))>=2


case表達式的默認返回值類型是任何返回值的相容集合類型,但具體情況視其所在語境而定。如果用在字符串語境中,則返回結果味字符串。如果用在數字語境中,則返回結果為十進制值、實值或整數值。

if(expr1,expr2,expr3)

如果 expr1 是true (expr1 <> 0 and expr1 <> null),則 if()的返回值為expr2; 否則返回值則為 expr3。if() 的返回值為數字值或字符串值,具體情況視其所在語境而定。

mysql教程> select if(1>2,2,3);

-> 3

mysql> select if(1<2,'yes ','no');

-> 'yes'

mysql> select if(strcmp('test','test1'),'no','yes');

-> 'no'


意,為了在 group by 塊中使用 case,查詢語句需要在 group by 塊中重復 select 塊中的 case 塊。

 

copyright © 萬盛學電腦網 all rights reserved