Lokasi ngalangkungan proxy:   [ UP ]  
[Ngawartoskeun bug]   [Panyetelan cookie]                
Skip to content

Latest commit

 

History

History
101 lines (74 loc) · 3.67 KB

File metadata and controls

101 lines (74 loc) · 3.67 KB
description Logical Functions - IIF (Transact-SQL)
title IIF (Transact-SQL) | Microsoft Docs
ms.custom
ms.date 03/14/2017
ms.prod sql
ms.prod_service database-engine, sql-database
ms.reviewer
ms.technology t-sql
ms.topic reference
f1_keywords
IIF_TSQL
IIF
dev_langs
TSQL
helpviewer_keywords
IIF function
ms.assetid e3ccf8ed-1cec-43ac-90b7-d8597c24b050
author cawrites
ms.author chadam

Logical Functions - IIF (Transact-SQL)

[!INCLUDE SQL Server Azure SQL Database ]

Returns one of two values, depending on whether the Boolean expression evaluates to true or false in [!INCLUDEssNoVersion].

Topic link icon Transact-SQL Syntax Conventions

Syntax

IIF( boolean_expression, true_value, false_value )

[!INCLUDEsql-server-tsql-previous-offline-documentation]

Arguments

boolean_expression
A valid Boolean expression.

If this argument is not a Boolean expression then a syntax error is raised.

true_value
Value to return if boolean_expression evaluates to true.

false_value
Value to return if boolean_expression evaluates to false.

Return Types

Returns the data type with the highest precedence from the types in true_value and false_value. For more information, see Data Type Precedence (Transact-SQL).

Remarks

IIF is a shorthand way for writing a CASE expression. It evaluates the Boolean expression passed as the first argument, and then returns either of the other two arguments based on the result of the evaluation. That is, the true_value is returned if the Boolean expression is true, and the false_value is returned if the Boolean expression is false or unknown. true_value and false_value can be of any type. The same rules that apply to the CASE expression for Boolean expressions, null handling, and return types also apply to IIF. For more information, see CASE (Transact-SQL).

The fact that IIF is translated into CASE also has an impact on other aspects of the behavior of this function. Since CASE expressions can be nested only up to the level of 10, IIF statements can also be nested only up to the maximum level of 10. Also, IIF is remoted to other servers as a semantically equivalent CASE expression, with all the behaviors of a remoted CASE expression.

Examples

A. Simple IIF example

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

[!INCLUDEssResult]

Result  
--------  
TRUE  

B. IIF with NULL constants

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

The result of this statement is an error.

C. IIF with NULL parameters

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

[!INCLUDEssResult]

Result  
--------  
NULL  

See Also

CASE (Transact-SQL)
CHOOSE (Transact-SQL)