SQL Server 2012 Cómo utilizar la función lógica IIF ()

SQL Server 2012 ha introducido la nueva función lógica IIF (). El comportamiento de la función IIF () es bastante similar a las declaraciones CASE e IF en SQL Server. Usando IIF (), puedes usar menos líneas de código, y tu código será más legible.

Exploremos la función IIF () con algunos ejemplos.

IIF (): la función devuelve uno de los dos valores, dependiendo de si la expresión booleana especificada se evalúa como verdadera o falsa.

Sintaxis: IIF (boolean_expression, true_value, false_value)


• El primer argumento (boolean_expression) acepta la expresión booleana que se evaluará.
• La función devuelve el segundo argumento (valor_real), si la expresión booleana se evalúa como verdadera.
• La función devolverá el tercer argumento (false_value) significa que la expresión booleana ha fallado.

Veamos algunas consultas rápidas de SQL con la función IIF ()

Ejemplo 1.1: Compara dos números con IIF ()

SELECT IIF (1> 0, 'True', 'False') AS 'Output' GO Output ------ True


Ejemplo 1.2: Compara dos fechas con IIF ()

SELECT IIF ('10 / 15/2012 '> '01 / 01/2012', 'Sí', 'No') COMO 'Salida' Salida GO---- Sí


Ejemplo 1.3: Compara dos variables enteras con IIF ()

DECLARE @ num1 AS INT = 150 DECLARE @ num2 AS INT = 100 SELECT IIF (@ num1 <@ num2, 'True', 'False') AS 'Output' GO Output ------ False


Ejemplo 1.4: Compara dos cadenas con IIF ()
La mayoría de ustedes se preguntan por qué deberíamos usar IIF () sobre las declaraciones CASE e IF.

IIF () parece más legible, es más fácil de elaborar y tiene menos líneas de códigos en comparación con las declaraciones CASE e IF.

Contrastemos los diversos métodos de comparación de dos cadenas mediante el uso de las funciones IF, CASE y IIF ().

DECLARAR @str como varchar (20) = 'tech-recipes' si (@str = 'tech-recipes') seleccione 'Sí' COMO 'SALIDA', ELIGE 'No' COMO 'SALIDA' SALIR SALIR ------ Sí
DECLARE @str AS varchar (20) = 'tech-recipes' seleccione CASE cuando @ str = 'tech-recipes' THEN 'Yes' ELSE 'No' END 'AS' Output 'GO OUTPUT ------ Yes
DECLARE @str as varchar (20) = 'tech-recipes' seleccione IIF (@str = 'tech-recipes', 'yes', 'no') como OUTPUT GO OUTPUT ------ Sí


Las tres consultas anteriores que utilizan las funciones IF, CASE y IIF () hacen lo mismo y devuelven el mismo resultado. Sin embargo, usar IIF () es más fácil y más legible.