IIF (Transact-SQL)

Devuelve uno de dos valores, dependiendo de si la expresión booleana se evalúa como true o como false en SQL Server 2012.

Icono de vínculo a temas Convenciones de sintaxis de Transact-SQL

Sintaxis

IIF ( boolean_expression, true_value, false_value )

Argumentos

  • boolean_expression
    Una expresión booleana válida.

    Si este argumento no es una expresión booleana, se produce un error de sintaxis.

  • true_value
    Valor que se va a devolver si boolean_expression se evalúa como true.

  • false_value
    Valor que se va a devolver si boolean_expression se evalúa como false.

Tipos de valor devuelto

Devuelve el tipo de datos que tiene la prioridad más alta de los tipos de true_value y false_value. Para obtener más información, vea Prioridad de tipo de datos (Transact-SQL).

Comentarios

IIF es una manera abreviada para escribir una expresión CASE. 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. 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. true_value y false_value pueden ser de cualquier tipo. 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. Para obtener más información, vea CASE (Transact-SQL).

El hecho de que IIF se traduzca a CASE también afecta a otros aspectos del comportamiento de esta función. 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. 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.

Ejemplos

A.Ejemplo sencillo de IIF

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

El conjunto de resultados es el siguiente.

Result
--------
TRUE

(1 row(s) affected)

B.IIF con constantes NULL

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

El resultado de esta instrucción es un error.

C.IIF con parámetros NULL

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

El conjunto de resultados es el siguiente.

Result
--------
NULL

(1 row(s) affected)

Vea también

Referencia

CASE (Transact-SQL)

CHOOSE (Transact-SQL)