SQLServer之Case用法

定義

計算條件列表,並返回多個可能的結果表達式之一。數據庫

表達式類型

case具備兩種格式:express

  • 簡單case表達式,它經過將表達式與一組簡單的表達式進行比較來肯定結果。
  • case搜索表達式,它經過計算一組布爾表達式來肯定結果。

這兩種方式,都支持可選的 else參數,大部分狀況下是能夠實現相同的功能。
case可用於容許使用有效表達式的任意語句或子句, 例如,能夠在 select、update、delete和 set等語句以及 select_list、in、where、order by和 having等子句中使用 Case。函數

語法

簡單case表達式

select spa

case input_expressionip

when when_expression then result_expressioninput

when when_expression then result_expressionit

......io

else else_result_expressionend table

from class

databasename.dbo.tablename

示例

clipboard.png

case搜索表達式

select

case

when boolean_expression then result_expression

when boolean_expression then result_expression

......

else else_result_expressionend end

from

databasename.dbo.tablename

示例

clipboard.png

語法解析

input_expression
使用簡單 case格式時計算的表達式。 input_expression 是任何有效的表達式 。

when when_expression
使用簡單 case格式時要與 input_expression 進行比較的簡單表達式 。 when_expression 是任何有效的表達式 。input_expression 及每一個 when_expression 的數據類型必須相同或必須是隱式轉換的數據類型 。

then result_expression
當 input_expression = when_expression 的計算結果爲 true時,或 boolean_expression 的計算結果爲 true時返回的表達式 。 result expression 是任何有效的表達式 。

else else_result_expression
比較運算計算結果不爲 true 時返回的表達式。 若是忽略此參數且比較運算計算結果不爲 true,則 case返回 null。 else_result_expression 是任何有效的表達式 。 else_result_expression 及任何 result_expression 的數據類型必須相同或必須是隱式轉換的數據類型 。

when boolean_expression
使用 case 搜索格式時所計算的布爾表達式。 boolean_expression 是任何有效的布爾表達式 。

返回類型

從 result_expressions 和可選 else_result_expression 的類型集中返回優先級最高的類型 。

返回值

case 簡單表達式:

case 簡單表達式的工做方式以下:將第一個表達式與每一個 when 子句中的表達式進行比較,以肯定它們是否等效。 若是這些表達式等效,將返回 then 子句中的表達式。

  • 僅用於等同性檢查。
  • 按指定的順序計算每一個 when 子句的 input_expression = when_expression。
  • 返回首個 input_expression = when_expression 的計算結果爲 true 的
    result_expression 。
  • 若是 input_expression = when_expression 的計算結果均不爲 true,則在指定了 else
    子句的狀況下,SQLServer數據庫引擎將返回 else_result_expression;若沒有指定 else 子句,則返回
    null 值 。

case 搜索表達式:

  • 按指定順序對每一個 when 子句的 boolean_expression 進行計算 。
  • 返回首個 boolean_expression 的計算結果爲 true 的 result_expression 。
  • 若是 boolean_expression 的計算結果均不爲 true,則在指定了 else 子句的狀況下,數據庫引擎將返回
    else_result_expression;若沒有指定 else 子句,則返回 null 值 。

優缺點

簡單case函數注重簡潔,可是它只適用於這種單字段的單值比較,而case搜索函數的優勢在於適用於全部比較(包括多值比較)的狀況。

相關文章
相關標籤/搜索