1. 程式人生 > >SQL語句中case when函式的用法

SQL語句中case when函式的用法

前一段時間進行一段比較複雜的資料庫業務查詢需要對查詢出來的資料進行分類統計 ,用到了資料庫的case函式,這時才注意到這個函式有兩種用。

一種是:

case 欄位名 when 欄位值 then 值 else 值2 end 

這一種是之前比較常用的一種方式,相當於是大部分程式語言中的switch case的用法,通過欄位名,去匹配欄位值,適合欄位值比較固定的情況下使用,特點是比較簡潔易用。

還有一種:

case when 條件 then 值 else 值2 end

這一種應該用過的人比較少一些,一般情況下也不需要使用這種判斷方式,如果情況允許的話,最好是在where子句中進行條件篩選,避免資料庫不必要的效能消耗。但是一些特殊的情況下還是會用到的。這種用法的特點其他程式語言中的if else條件語句十分相似的 when後面的是一個條件表示式,根據表示式的結果來進行決定是否為then後面的值,使用起來比較靈活,可以適應更多的複雜情況。

事實上絕大部分的第一種用法都是可以轉換為第二種的形式來寫的,但是這樣寫的時候會顯得SQL語句比較繁瑣,不易閱讀,大部分情況下還是建議使用第一種用法,如果遇到無法處理的情況下再使用第二種進行處理。