IIF (Transact-SQL)
在 SQL Server 中根據布林運算式評估為 true 或 false 而傳回兩值之一。
適用於:SQL Server (SQL Server 2012 透過目前版本)、Windows Azure SQL 資料庫 (初始版本,透過目前版本)。 |
語法
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 運算式的所有行為,從遠端處理到其他伺服器。
範例
A.簡單的 IIF 範例
DECLARE @a int = 45, @b int = 40;
SELECT IIF ( @a > @b, 'TRUE', 'FALSE' ) AS Result;
以下為結果集:
Result
--------
TRUE
(1 row(s) affected)
B.包含 NULL 常數的 IIF
SELECT IIF ( 45 > 30, NULL, NULL ) AS Result;
此陳述式的結果為錯誤。
C.包含 NULL 參數的 IIF
DECLARE @P INT = NULL, @S INT = NULL;
SELECT IIF ( 45 > 30, @p, @s ) AS Result;
以下為結果集:
Result
--------
NULL
(1 row(s) affected)