邏輯選擇函數,判斷一個條件,根據結果的不同,返回不同的值,這類函數,可以看作是case語句的shorthand。 1,IIF 函數 該函數判斷一個邏輯表達式,如果結果為True,返回一個表達式;如果為False,返回另外一個表達式。 例如:判斷兩個變數的值,返回不同的結果 2,CHOOSE 函數 根 ...
邏輯選擇函數,判斷一個條件,根據結果的不同,返回不同的值,這類函數,可以看作是case語句的shorthand。
1,IIF 函數
該函數判斷一個邏輯表達式,如果結果為True,返回一個表達式;如果為False,返回另外一個表達式。
IIF ( boolean_expression, true_value, false_value )
例如:判斷兩個變數的值,返回不同的結果
DECLARE @a int = 45, @b int = 40; SELECT IIF ( @a > @b, 'TRUE', 'FALSE' ) AS Result;
2,CHOOSE 函數
根據Index值,返回列表中特定位置的值;Index值可以是動態的;
CHOOSE acts like an index into an array, where the array is composed of the arguments that follow the index argument. The index argument determines which of the following values will be returned.
CHOOSE ( index, val_1, val_2 [, val_n ] )
例如:根據索引3,從列表中返回第三個value:Developer
DECLARE @idx INT set @idx=3 SELECT CHOOSE ( @idx, 'Manager', 'Director', 'Developer', 'Tester' ) AS Result;
3,ISNULL 函數
判斷表達式是否為NULL,如果為NULL,用另一個值來代替
ISNULL ( check_expression , replacement_value )
4,COALESCE 函數
返回列表中,第一個不是NULL的表達式的值
COALESCE ( expression [ ,...n ] )
註意,參數列表中必須有一個表達式不是NULL,否則報錯:
At least one of the arguments to COALESCE must be an expression that is not the NULL constant.
5,CASE 語句
case語句能夠用於所有的表達式中,共有兩種寫法,如下:
case expression when value_1 then return_value_1 when value_2 then return_value_2 when value_n then return_value_n [else return_value_else] end case when expression=value_1 then return_value_1 when expression=value_2 then return_value_2 when expression=value_n then return_value_n [else return_value_else] end
在使用case語句時,有兩點需要註意:
- when 子句的執行是有順序的:從上向下順序執行,只要條件匹配,case 語句就不再向下執行,直接返回相應的結果,即使後續的條件也滿足;
- else 語句是可選的:如果存在else語句,表示當其他條件都不滿足時,返回return_value_else;如果省略else語句,TSQL 預設使用 else null,即,當其他條件都不滿足,返回NULL。
例如,數值11 滿足第二個,第三個when子句的條件,由於when子句的執行是有順序的,但滿足第二個條件時,case 語句結束判斷,返回 middle
declare @VarInt int set @VarInt=11 select case when @VarInt>11 then 'high' when @VarInt>5 then 'middle' when @VarInt>1 then 'low' else 'omit' end
參考文檔: