Compartir vía


Funciones lógicas - IIF (Transact-SQL)

Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance

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

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 devuelve si boolean_expression se evalúa como true.

false_value

Valor que se devuelve 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, consulte 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.

IIF no se admite en grupos de SQL dedicados en Azure Synapse Analytics.

Ejemplos

A. Ejemplo sencillo de IIF

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

Este es el conjunto de resultados.

Result  
--------  
TRUE  

B. IIF con constantes NULL

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

El resultado de esta instrucción es un error.

C. IIF con parámetros NULL

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

Este es el conjunto de resultados.

Result  
--------  
NULL  

Pasos siguientes