Funciones lógicas - IIF (Transact-SQL)Logical Functions - IIF (Transact-SQL)

Se aplica a:Applies to: síSQL ServerSQL Server (todas las versiones admitidas) yesSQL ServerSQL Server (all supported versions) SíAzure SQL DatabaseAzure SQL DatabaseYesAzure SQL DatabaseAzure SQL DatabaseSe aplica a:Applies to: síSQL ServerSQL Server (todas las versiones admitidas) yesSQL ServerSQL Server (all supported versions) SíAzure SQL DatabaseAzure SQL DatabaseYesAzure SQL DatabaseAzure SQL Database

Devuelve uno de dos valores, dependiendo de si la expresión booleana se evalúa como true o como false en SQL ServerSQL Server.Returns one of two values, depending on whether the Boolean expression evaluates to true or false in SQL ServerSQL Server.

Icono de vínculo de tema Convenciones de sintaxis de Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxisSyntax

  
IIF ( boolean_expression, true_value, false_value )  

Nota

Para ver la sintaxis de Transact-SQL para SQL Server 2014 y versiones anteriores, consulte Versiones anteriores de la documentación.To view Transact-SQL syntax for SQL Server 2014 and earlier, see Previous versions documentation.

ArgumentosArguments

boolean_expressionboolean_expression
Una expresión booleana válida.A valid Boolean expression.

Si este argumento no es una expresión booleana, se produce un error de sintaxis.If this argument is not a Boolean expression, then a syntax error is raised.

true_valuetrue_value
Valor que se devuelve si boolean_expression se evalúa como true.Value to return if boolean_expression evaluates to true.

false_valuefalse_value
Valor que se devuelve si boolean_expression se evalúa como false.Value to return if boolean_expression evaluates to false.

Tipos de valor devueltoReturn Types

Devuelve el tipo de datos que tiene la prioridad más alta de los tipos de true_value y false_value.Returns the data type with the highest precedence from the types in true_value and false_value. Para obtener más información, vea Prioridad de tipo de datos (Transact-SQL).For more information, see Data Type Precedence (Transact-SQL).

ObservacionesRemarks

IIF es una manera abreviada para escribir una expresión CASE.IIF is a shorthand way for writing a CASE expression. Evalúa la expresión booleana pasada como primer argumento y devuelve cualquiera de los otros dos argumentos según el resultado de la evaluación.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. Es decir, se devuelve true_value si la expresión booleana es true y se devuelve false_value si la expresión booleana es false o desconocida.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 y false_value pueden ser de cualquier tipo.true_value and false_value can be of any type. Las mismas reglas que se aplican a la expresión CASE en las expresiones booleanas, el control de valores NULL y los tipos de valores devueltos también se aplican a IIF.The same rules that apply to the CASE expression for Boolean expressions, null handling, and return types also apply to IIF. Para más información, vea CASE (Transact-SQL).For more information, see CASE (Transact-SQL).

El hecho de que IIF se traduzca a CASE también afecta a otros aspectos del comportamiento de esta función.The fact that IIF is translated into CASE also has an impact on other aspects of the behavior of this function. Dado que las expresiones CASE solo se pueden anidar hasta 10 niveles, las instrucciones IIF también se pueden anidar únicamente hasta un máximo de 10.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. Además, IIF se envía de forma remota a otros servidores como una expresión CASE semánticamente equivalente, con todos los comportamientos de una expresión CASE remota.Also, IIF is remoted to other servers as a semantically equivalent CASE expression, with all the behaviors of a remoted CASE expression.

EjemplosExamples

A.A. Ejemplo sencillo de IIFSimple IIF example

DECLARE @a int = 45, @b int = 40;  
SELECT IIF ( @a > @b, 'TRUE', 'FALSE' ) AS Result;  

El conjunto de resultados es el siguiente:Here is the result set.

Result  
--------  
TRUE  
  
(1 row(s) affected)  

B.B. IIF con constantes NULLIIF with NULL constants

SELECT IIF ( 45 > 30, NULL, NULL ) AS Result;  

El resultado de esta instrucción es un error.The result of this statement is an error.

C.C. IIF con parámetros NULLIIF with NULL parameters

DECLARE @P INT = NULL, @S INT = NULL;  
SELECT IIF ( 45 > 30, @p, @s ) AS Result;  

El conjunto de resultados es el siguiente:Here is the result set.

Result  
--------  
NULL  
  
(1 row(s) affected)  

Consulte tambiénSee Also

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