SQLServer之Case用法


定義

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

表達式類型

case具有兩種格式:

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

這兩種方式,都支持可選的 else參數,大部分情況下是可以實現相同的功能。

case可用於允許使用有效表達式的任意語句或子句, 例如,可以在 select、update、delete和 set等語句以及 select_list、in、where、order by和 having等子句中使用 Case。

語法

簡單case表達式

select 

case input_expression

when when_expression then result_expression

when when_expression then result_expression

......

else else_result_expressionend 

from 

databasename.dbo.tablename

示例

 

case搜索表達式

select

case

when boolean_expression then result_expression

when boolean_expression then result_expression

......

else else_result_expressionend end

from 

databasename.dbo.tablename

示例

 

語法解析

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搜索函數的優點在於適用於所有比較(包括多值比較)的情況。


免責聲明!

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



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