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
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
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
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
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
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.
Descubre más contenido