邏輯函式 - IIF (Transact-SQL)
適用於:SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體
根據 SQL Server 的布林運算式評估為 true 或 false,傳回兩值之一。
語法
IIF( boolean_expression, true_value, false_value )
引數
boolean_expression
有效的布林運算式。
如果這個引數不是布林運算式,會引發語法錯誤。
true_value
boolean_expression 評估為 true 時,要傳回的值。
false_value
boolean_expression 評估為 false 時,要傳回的值。
傳回型別
從 true_value 及 false_value 的類型中,傳回優先順序最高的資料類型。 如需詳細資訊,請參閱資料類型優先順序 (Transact-SQL)。
備註
IIF 是一種編寫 CASE 運算式的簡略方法。 其會求得第一個引數所傳遞之布林運算式的解,然後依據求解結果,傳回另外兩個引數之一。 亦即,如果布林運算式為 true,則會傳回 true_value如果布林運算式為 false 或不明,則會傳回 false_value。 true_value 和 false_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