SQL語句中case函數


  case函數,嚴格的意義上來講case函數已經試流程控制語句了,不是簡單意義上的函數,不過為了方便,很多人將case函數稱為流程控制函數。

case函數的一般有兩種用法:1.case expression

                when value1 then returnvalue1

                when value2 then returnvalue2

                when value3 then returnvalue3

                else   defaultvalue

                end

                                             上述的第一種用法就是:case函數對表達式expression進行測試,如果expression等於value1則返回returnvalue1.依次類推如果不符合條件的所有的when條件,就返回默認值defaultvalue。

可見case函數跟普通的switch   case語句非常類似,使用case函數我們可以實現復雜的業務邏輯,下面的sql語句就是就是用來判斷是好孩子,我們偏愛tom所以我們認為他是好孩子,jack是壞孩子,其他的都是普通孩子

select fname, (

case fname

when 'tom' then '好孩子'

when 'jack' then '壞孩子'

else '普通孩子'

end

) as isgoodchild

from T_person

2:case函數在做報表的時候非常有用,比如T_customer表中的flevel字段是整數類型,它記錄着客戶的級別,如果是1是VIP用戶,如果是2就是高級用戶,如果是3就是普通用戶,在制作報表的時候不應該把1,2,3這樣的數字顯示在報表中而應該顯示它的文字,這里就可以用case函數來實現

select fname,

(

  case flevel

  when 1 then 'VIP客戶'

  when 2 then '高級客戶'

  when 3 then '普通客戶'

  else '客戶類型錯誤'

  end

) as flevelName

from T_customer

用法二:

上面的case用法只能用來實現簡單的等於的邏輯判斷,要實現“如果年齡小於18則返回未成年人”否則返回“成年人”是無法完成的,這就是需要case的第二種用法了。

case 

when condition1 then returnvalue1

when condition2 then returnvalue2

when condition3 then returnvalue3

else   defaultvalue

end

解釋:condition1,condition2,condition3為條件表達式。case函數對各個表達式從前向后進行測試。如果條件1為真的時候就返回條件1對應的值returnvalue1,否則如果condition2為真的時候就返回returnvalue2........以此類推 如果都不符合條件就返回默認值defaultvalue.這種用法沒有只能對一個表達式進行判斷,因此使用起來更加靈活,比如下面的sql語句判斷一個人的體重是不是正常,如果體重大於50偏重,小於40偏輕,介於40到50之間正常。

select

fname,fweight,(

case

when fweight <40 then 'thin'

when fweight > 50 then 'fat'

else 'ok'

end

) as isnormal

from T_person.

 


免責聲明!

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



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