Cómo utilizar la instrucción IF ... ELSE en SQL Server

Una declaración condicional IF… ELSE incluida en muchos lenguajes de programación. SI… ELSE funciona con una expresión booleana que da como resultado VERDADERO o FALSO. Además, se pueden realizar diferentes acciones sobre los resultados de las expresiones booleanas.

IF… ELSE en SQL Server se usa para verificar la expresión y en base a los resultados (VERDADERO o FALSO) ejecutar otro bloque de sentencias SQL.

Sentencia CASE vs IF

Los desarrolladores de bases de datos se confunden entre las declaraciones CASE e IF. Por lo tanto, es importante comprender la diferencia y los casos de uso. Otros lenguajes de programación utilizan la instrucción SWITCH en lugar de CASE.

1. IF es una declaración lógica para controlar el flujo del lote, mientras que la declaración CASE determina el valor que se utilizará en una columna.
2. CASE se puede usar dentro de UPDATE / SELECT / ORDER BY para determinar un valor, mientras que IF no se puede usar.

BEGIN… END Bloque

El bloque BEGIN ... END ejecuta la instrucción SQL definida en orden secuencial. Como resultado, este bloque combina declaraciones y las ejecuta en un orden fijo.

BEGIN
    SQL Statement 1 
    SQL Statement 2
    SQL Statement 3
END

Declaración IF ... ELSE

Además, IF… ELSE funciona en T-SQL de manera similar a otros lenguajes de programación. Demostremos los diferentes casos de uso.

Tenga en cuenta que la comparación dentro de la declaración IF se realiza utilizando = (signo igual simple) en T-SQL a diferencia de == (doble signo igual) en otros lenguajes de programación.

1.

Declaración IF única

La sentencia IF incluye un solo bloque de BEGIN… END. Si la condición booleana devuelve TRUE, se ejecutan las declaraciones dentro de BEGIN… END. De lo contrario, el bloque BEGIN… END se omite por completo.

En este ejemplo, la comparación de cadenas se evalúa como VERDADERO, por lo tanto, se ejecutan las declaraciones dentro de un bloque.

IF ( 'Tech' = 'Tech' ) -- Returns TRUE Or FALSE
BEGIN -- Executed If TRUE
    PRINT 'Test-1'
    PRINT 'Test-2'
END -- Skipped If False

Cómo utilizar IF ... ELSE en SQL Server_1

En el siguiente ejemplo, la comparación se evalúa como falsa, por lo tanto, se omiten las declaraciones dentro de un bloque.

IF ( 1 = 0 ) -- Returns TRUE or FALSE
BEGIN -- Executed If TRUE
    Print 'Test-1'
    Print 'Test-2'
END 

Cómo usar IF ... ELSE en SQL Server_2

En los siguientes ejemplos, se demuestra el uso de variables dentro de la declaración IF. Podemos probar la coincidencia escalar o de valores múltiples con IN cláusula. Si uno de los valores coincide con la cláusula IN, la declaración IF se evalúa como VERDADERO.

DECLARE @Year as INT = YEAR(GETDATE());

IF @Year = 2019
BEGIN
    PRINT 'Yes, we are in 2019'
END
GO

DECLARE @Year as INT = YEAR(GETDATE());

IF @Year IN (2019, 2020, 2021) -- (@Year = 2019 OR @Year = 2020 OR @Year = 2021)
BEGIN
    PRINT 'Yes, we are In';
END

Cómo usar IF ... ELSE en SQL Server_3

2.

Declaración única IF… ELSE

Demostrando una sola declaración IF… ELSE. Si la condición se evalúa como CIERTO en la instrucción IF, se ejecuta la instrucción dentro del primer bloque BEGIN… END.

Si la condición se evalúa como FALSO entonces el control se pasa a DEMÁS bloque y segundo bloque BEGIN… END después de que se ejecute ELSE.

Siguiendo consultas usando IF… ELSE para evaluar una condición y si el resultado es TRUE, entonces se ejecuta el primer bloque de código. De lo contrario, el control se pasa al bloque ELSE.

IF ( 1 = 0 ) --Returns TRUE or FALSE
BEGIN -- If TRUE
    Print 'You are in IF block'   
END 
ELSE -- If FALSE
BEGIN
    PRINT 'You are in ELSE block'
END

DECLARE @Year as INT = YEAR(GETDATE());

IF @Year IN (2019, 2020, 2021) -- (@Year = 2019 OR @Year = 2020 OR @Year = 2021)
BEGIN
    PRINT 'Yes, we are In';
END
ELSE
BEGIN
    PRINT 'Skipped';
END

Cómo usar IF ... ELSE en SQL Server_4

3.

Declaración múltiple IF… ELSE

Para muchas condiciones, podemos usar varios bloques IF… ELSE con una declaración ELSE final (opcional). Si alguna de las condiciones se evalúa como TRUE, se omiten otros bloques ELSE… IF y ELSE. Si ninguno de los bloques IF… ELSE es TRUE, el control se pasa al bloque ELSE final.

En los ejemplos siguientes, podemos ver que el segundo bloque IF… ELSE se evalúa como VERDADERO, omitiendo así todas las demás condiciones.

DECLARE @Number as INT = 100;

IF (@Number = 101)
BEGIN
    Print 'Number is 101'; --False
END
ELSE IF (@Number = 100)
BEGIN
    Print 'Number is 100'; --True
END
ELSE IF (@Number = 102)
BEGIN
    PRINT 'Number is 102'; --Skipped
END
ELSE
BEGIN
    PRINT 'Number is out of scope'; --Skipped
END

Cómo usar IF ... ELSE en SQL Server_5

Resumen

Sobre todo, hemos aprendido a usar la instrucción condicional IF..ELSE en SQL Server, incluidos varios ejemplos. Si le gusta este artículo, es posible que le gusten los archivos de la base de datos de Tech-Recipes para aprender más cosas útiles.

Subir