邏輯函式 - IIF (Transact-SQL)

適用於:SQL ServerAzure SQL DatabaseAzure SQL 受控執行個體

根據 SQL Server 的布林運算式評估為 true 或 false,傳回兩值之一。

Transact-SQL 語法慣例

Syntax

IIF( boolean_expression, true_value, false_value )

注意

若要檢視 SQL Server 2014 (12.x) 和舊版的 Transact-SQL 語法,請參閱 舊版檔

引數

boolean_expression

有效的布林運算式。

如果這個引數不是布林運算式,會引發語法錯誤。

true_value

boolean_expression 評估為 true 時,要傳回的值。

false_value

boolean_expression 評估為 false 時,要傳回的值。

傳回型別

true_valuefalse_value 的類型中,傳回優先順序最高的資料類型。 如需詳細資訊,請參閱資料類型優先順序 (Transact-SQL)

備註

IIF 是一種編寫 CASE 運算式的簡略方法。 其會求得第一個引數所傳遞之布林運算式的解,然後依據求解結果,傳回另外兩個引數之一。 亦即,如果布林運算式為 true,則會傳回 true_value如果布林運算式為 false 或不明,則會傳回 false_valuetrue_valuefalse_value 可為任何類型。 套用到布林運算式、null 處理及傳回類型之 CASE 運算式的規則也同樣會套用至 IIF。 如需詳細資訊,請參閱 CASE (Transact-SQL)

IIF 轉換為 CASE 的事實,對此函數之行為的其他層面也有影響。 由於 IIF 陳述式最多只可巢狀化到層級 10,因此 CASE 運算式最多也只可巢狀化至層級 10。 此外,IIF 會以語意相等之 CASE 運算式,並以遠端處理之 CASE 運算式的所有行為,從遠端處理到其他伺服器。

Azure Synapse Analytics 的專用 SQL 集區不支援 IIF。

範例

A. 簡單的 IIF 範例

DECLARE @a INT = 45, @b INT = 40;
SELECT [Result] = IIF( @a > @b, 'TRUE', 'FALSE' );

以下為結果集。

Result  
--------  
TRUE  

B. 包含 NULL 常數的 IIF

SELECT [Result] = IIF( 45 > 30, NULL, NULL );

此陳述式的結果為錯誤。

C. 包含 NULL 參數的 IIF

DECLARE @P INT = NULL, @S INT = NULL;  
SELECT [Result] = IIF( 45 > 30, @P, @S );

以下為結果集。

Result  
--------  
NULL  

後續步驟