共用方式為


IIF (Transact-SQL)

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

主題連結圖示 Transact-SQL 語法慣例

適用於: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)

請參閱

參考

CASE (Transact-SQL)

CHOOSE (Transact-SQL)