IIF: Vaya como se parece al operador ternario ?


Desde 2012, disponemos de la función lógica IIF, que nos resuelve un valor, dependiendo de una expresión. Parece ser que se incluyo para migrar datos de su hermano pequeño (Access).

Si programas en algún lenguaje, IIF es básicamente el operador ternario.

Sin embargo T-SQL lo traduce en expresiones CASE

Imagen de Arek Socha en Pixabay

IIF recibe tres parámetros:

  1. Expresión a evaluar.
  2. Valor a retornar si expresión true.
  3. Valor a retornar si expresión false.

La práctica:

-- Code 1.0
DECLARE @Variable_VarChar_NullValue VARCHAR(10);
SELECT 
 IIF(@Variable_VarChar_nullValue IS NULL, 
     'ES TRUE', 
     'ES FALSE')
   AS [PRIMERA_FUNCION_TRUE], 
 IIF(@Variable_VarChar_nullValue IS NOT NULL, 
     'ES TRUE', 
     'ES FALSE')
   AS [SEGUNDA_FUNCION_FALSE];

Pero como saber si realmente lo traduce en un Case.

Vamos a verlo con un ejemplo.

-- Code 2.0
if object_id(N'pruebasIIF') IS NOT NULL
     drop table dbo.pruebasIIF;

CREATE TABLE dbo.pruebasIIF
(ID     INT IDENTITY(1, 1), 
 nombre VARCHAR(100), 
 idioma BIT
);
GO

 
INSERT INTO dbo.pruebasIIF
(
nombre, 
idioma
)
VALUES
('Ana',  0),
('Jose',  1),
('Pepe',  0),
('Adeña',  1);
GO 

Cuando ya tengo la tabla creada con sus valores, preparo la consulta, pero aún no la ejecuto. Marco los iconos del plan de ejecución de la imágen posterior.

-- Code 3.0
SELECT 
  id, 
  nombre, 
  IIF(idioma=0, 
   'NO CONOCE ALTERNATIVO', 
   'SI CONOCE')
   AS [IIF EVALUACION]
     FROM dbo.pruebasIIF;

En Management Studio  

La imagen dividida en tres partes. 

  1. En la primera busca los iconos que están marcados en la barra de herramientas de Editor Sql.
  2. En la segunda, ves la salida que proporcionan estos iconos, que son las relativas al plan de ejecución de consultas y a las estadísticas de consultas dinámicas.
  3. En la tercera, ..hummmm…. vaya aparece la sentencia que se va a ejecutar, que no es más que el case when idioma=0 then….. o lo que significa, que realmente, IIF es una traducción, o una forma simplificada de case.

 😀


Deja un comentario

Este sitio utiliza Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.