![](http://lesptitesaffairesdemayl.be/img/images_1/sql-server-2012-how-to-use-iif-logical-function.jpg)
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.