SQL Server 2012 introdujo una nueva función lógica incorporada SQL IIF. Es una forma abreviada de escribir lógica de sentencia de caso o lógica IF-ELSE.

exploramos la sentencia Case en SQL en mi artículo anterior. Utilizamos una sentencia case para devolver un resultado basado en la condición definida. Es similar a un IF..ELSE evaluates then la instrucción evalúa una expresión y devuelve la salida. La instrucción case está disponible en casi todas las versiones de SQL Server.

exploremos esta función SQL IIF en este artículo.,

descripción general de la instrucción SQL IIF

utilizamos el siguiente formato para escribir la lógica de la instrucción Case en consultas SQL

seleccionar la expresión CASE cuando expression1 luego Result1 cuando expression2 luego Result2 ELSE ELSE Result END

Podemos escribir este código usando la sintaxis de la instrucción SQL IIF de la siguiente manera.

IIF (boolean_expression, true_value, false_value)

  • Boolean_expression: el primer parámetro en la instrucción SQL IIF es una expresión booleana., Debe ser una expresión booleana válida de lo contrario obtenemos una excepción
  • True_Value: si la expresión booleana es verdadera, devuelve el valor especificado en el parámetro true_value
  • False_Value: si la expresión booleana es falsa, devuelve el valor especificado en el parámetro false_value

exploremos la instrucción SQL IIF usando ejemplos.

ejemplo 1: instrucción SQL IIF para comparar valores enteros

en el siguiente ejemplo, la expresión booleana especificada devuelve False (2>3 no es TRUE)., Due to this, it returns the value specified in the false_value parameter.

1
SELECT IIF(2 > 3, ‘TRUE’, ‘FALSE’ )

Similarly, if the condition is TRUE (5>3 is TRUE) so it returns the value of true_value parameter.,

1
SELECT IIF(5 > 3, ‘TRUE’, ‘FALSE’ )

Example 2: SQL IIF statement with variables

In the following example, we specified two integer variables and assigned values. We use variables for comparison in the IIF statement.,

1
2

DECLARE @A INT = 80, @B INT = 70
SELECT IIF(@A >= @B, ‘PASS’, ‘FAIL’ )

The specified condition (80>70) is TRUE, so it returns the value PASS.,

Ejemplo 3: instrucción SQL IIF para comparar dos cadenas

en el siguiente ejemplo, queremos comparar los datos de cadena usando la instrucción SQL IIF. Queremos saber la persona que le gusta basado en el nombre de la persona.,

1
2

DECLARE @Person Varchar(100) = ‘Raj’
SELECT IIF(@Person=’Raj’,’Likes Apple’,’NA’)

We can specify multiple conditions in SQL IIF statement as well.,i>

  • Else all other persons like orange
  • 1
    2

    DECLARE @Person Varchar(100) = ‘Raj’
    SELECT IIF(@Person in(‘Raj’, ‘Mohan’),’Likes Apple’,’Likes Orange’)

    The query should return Likes Orange if the person name is not in the IN clause., En el siguiente ejemplo, person Vinay no existe en la variable @Person, por lo que devuelve el valor de una cláusula falsa.

    Ejemplo 4: instrucción SQL IIF anidada

    También podemos usar la instrucción SQL IIF anidada para especificar múltiples condiciones

    en esta función SQL IIF, comprueba la primera condición y si la condición es verdadera, devuelve el valor. En nuestro caso, es FALSE ( Person Vinay no coincide con Raj). comprueba la otra condición y devuelve los resultados si es TRUE.,

    Si ninguna de las condiciones es true, devuelve el valor predeterminado false mensaje.

    Ejemplo 5: SQL instrucción IIF con una columna de la tabla

    En los ejemplos anteriores, podemos especificar los valores directamente en la instrucción IIF o especificado variables para ella. Por lo general, queremos usarlo con los datos existentes en una tabla SQL. También podemos usar la instrucción IIF con una columna de tabla.,

    en el siguiente ejemplo, queremos saber el nombre del proveedor de la tabla PurchaseOrders en la base de datos WideWorldImporters.

    Si el nombre del proveedor no existe para un ID de Proveedor en particular, devuelve el valor false especificado en la instrucción SQL IIF.

    ejemplo 6: instrucción SQL IIF con una columna de tabla y una función agregada

    Ejemplo 7: instrucción SQL IIF y precedencia de tipo de datos

    es posible que tengamos diferentes tipos de datos para los resultados., Si tenemos diferentes tipos de datos especificados en las condiciones de resultado, SQL Server da el tipo de datos de mayor prioridad. En el siguiente ejemplo, para la condición false (11>19), el resultado será el argumento false_value, es decir, 100. Debe ser de tipo de datos e integer, pero obtenemos la salida 40.0 porque el otro argumento float (2.6) es de alta precedencia que un entero.,

    1
    SELECT IIF(11 > 19, 2.6, 40)

    You can check the data type precedence in the following image

    Example 8: SQL IIF with NULL values

    We should be careful in NULL values inside the SQL IIF function.,

    1
    2
    3

    SELECT
    IIF(100 > 99, NULL, NULL) AS Result;

    We cannot specify NULL in both the true and false arguments. We get the following error message.,

    Msg 8133, nivel 16, estado 1, Línea 1 al menos una de las expresiones de resultado en una especificación CASE debe ser una expresión que no sea la constante NULL.

    en el mensaje de error, puede ver que da información sobre la especificación del caso, sin embargo, usamos la función SQL IIF. Veremos esto en el siguiente ejemplo.

    debe especificar al menos uno de los argumentos true o false.,

    1
    2

    SELECT
    IIF(100 > 99, ‘Hello’, NULL) AS Result;

    The similarity between SQL IIF statement and CASE Statement

    In the introduction of SQL IIF Statement, we mentioned that it is a shorthand form of writing CASE statement logic or IF-ELSE logic., Sí, es verdad. SQL Server convierte internamente la instrucción en la instrucción CASE y la ejecuta. Podemos comprobarlo usando el plan de ejecución real de una consulta.

    ejecute la consulta del Ejemplo 6 con un plan de ejecución Real.

    En el plan de ejecución real, mirar las propiedades de Calcular Escalar. Puede ver que ejecuta la instrucción CASE internamente.

    conclusión

    en este artículo, exploramos la instrucción SQL IIF que es una nueva forma de escribir condiciones relacionadas con la instrucción CASE., Está disponible a partir de SQL 2012. Usted debe explorar esto para estar familiarizado con esto. Si tiene algún comentario o pregunta, no dude en dejarlos en los comentarios a continuación.,

    • Autor
    • mensajes Recientes
    Como un MCSA certificación y la certificación Microsoft Certified Trainer en Gurgaon, India, con 13 años de experiencia, Rajendra trabaja para una gran variedad de empresas, centrándose en la optimización del desempeño, el monitoreo, la alta disponibilidad y recuperación de desastres y estrategias de implementación., Es autor de cientos de artículos autorizados sobre SQL Server, Azure, MySQL, Linux, Power BI, performance tuning, AWS/Amazon RDS, Git y tecnologías relacionadas que han sido vistos por más de 10 millones de lectores hasta la fecha. es el creador de una de las mayores colecciones gratuitas en línea de artículos sobre un solo tema, con su serie de 50 partes en grupos SQL Server Always on Availability. Basado en su contribución a la comunidad de SQL Server, ha sido reconocido con varios premios incluyendo el prestigioso «mejor autor del año» continuamente en 2020 y 2021 en SQLShack.,Raj siempre está interesado en nuevos desafíos, por lo que si necesita ayuda de consultoría sobre cualquier tema cubierto en sus escritos, puede ser contactado en rajendra.gupta16 @ gmail.,com
    Ver todos los mensajes por Rajendra Gupta

    Últimas entradas por Rajendra Gupta (ver todos)
    • la Realización de menor y mayor actualización de la versión para AWS RDS SQL Server – 29 de enero de 2021
    • la Implementación de AWS RDS para PostgreSQL instancias – 27 de enero de 2021
    • la Migración de las instalaciones de la bases de datos de SQL AWS RDS de SQL Server mediante el uso de AWS DMS – 25 de enero de 2021

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *