Si tienes dudas sobre la sentencia Case en SQL en este artículo intentaremos aclarártelas todas
Descripción general de la sentencia CASE en sql en la vida real.
Nuevamente, en la vida real, tomamos diferentes acciones dependiendo del resultado de las diferentes condiciones.
Para hacer más, considere el siguiente ejemplo:
- Si los boletos de avión cuestan menos de $ 100, visitaré Los Ángeles.
- Si los boletos de avión cuestan entre $ 100 y $ 200, visitaré Nueva York
- Si los boletos de avión cuestan entre $ 200 y $ 400, visitaré Europa
- De lo contrario, prefiero visitar un lugar turístico cercano.
Consideremos categorizar la condición y la acción por separado del ejemplo anterior:
Condiciones – Boletos de avión | Acciones tomadas, a menos que haya una condición CIERTO |
Menos de $ 100 | Visite Los Ángeles |
Entre $ 100 y $ 200 | Visite Nueva York |
Entre $ 200 y $ 400 | Visite Europa |
No se cumplió ninguna de las condiciones anteriores | Punto turístico cercano |
En el ejemplo anterior, podemos ver que el resultado de diferentes condiciones controla una actividad separada. Por ejemplo, un Visitante solo tomará la acción de visitar Nueva York en la condición si el boleto de vuelo está entre $ 100 y $ 200.
De manera similar, una instrucción CASE de MS SQL proporciona la capacidad de tomar medidas para ejecutar una instrucción T-SQL diferente en función del resultado de diferentes condiciones.
En este tutorial, aprenderá:
¿Qué es un CASE?
CASE es una extensión de la instrucción IF … ELSE. A diferencia de IF… ELSE, donde solo se permite una condición máxima, CASE permite al usuario aplicar múltiples condiciones para realizar diferentes conjuntos de acciones en MS SQL. Aprendemos este concepto en detalle en las siguientes secciones.
En MS SQL, hay dos tipos de CASE.
Sentencia CASE en sql simple
La sintaxis para un CASE simple
CASE <Case_Expression> WHEN Value_1 THEN Statement_1 WHEN Value_2 THEN Statement_2 . . WHEN Value_N THEN Statement_N [ELSE Statement_Else] END AS [ALIAS_NAME]
Seo
- El parámetro Case_Expression representa la interpretación con la que finalmente compararemos Valor_1, Valor_2,…
- Los parametros Statement_1, Statement_2… Indique las sentencias que se ejecutarán si Case_Expression = Value_1, Case_Expression = Value_2,… y así sucesivamente.
- En breve, un condición si Case_Expression = Value_N y ACTION son la ejecución de Statement_N si el VERDADERO el resultado anterior.
- SOBRE NOMBRE opcional y es el nombre de alias que se le da al resultado de las sentencias CASE. Se usa principalmente cuando usamos CASE en la cláusula de selección.
Reglas de CASE simples:
- Simple Case solo permite la verificación de igualdad de Case_Expression con Value_1 a Value_N.
- Case_Expression se compara con Value, para comenzar desde el primer valor, es decir, Value_1. El siguiente es el enfoque de ejecución:
- Si Case_Expression es igual a Value_1, luego QUÉ… Estas declaraciones se omiten y la ejecución de CASE finaliza inmediatamente.
- Si Case_Expression no coincide con Value_1, Case_Expression se compara con Value_2 para la equivalencia. Este proceso continuará comparando Case_Expression con un Value hasta que Case_Expression obtenga un valor equivalente del conjunto de Value_1, Value_2, …
- Si nada coincide, el control pasa a la instrucción ELSE y se ejecuta Statement_Else.
- ELSE es opcional.
- Si ELSE no está presente y Case_Expression coincide con alguno de los valores, entonces Se mostrará nulo.
El siguiente diagrama muestra el flujo de ejecución del CASE simple.
Ejemplos:
Suposición: Supongamos que tenemos la mesa como ‘Guru99’ con dos columnas y cuatro filas como se muestra a continuación:
Usaremos ‘Guru99’ tabla en ejemplos adicionales
Pregunta 1: CASE SIMPLE SIN OTRA opción
SELECT Tutorial_ID, Tutorial_name, CASE Tutorial_name WHEN 'SQL' THEN 'SQL is developed by IBM' WHEN 'PL/SQL' THEN 'PL/SQL is developed by Oracle Corporation.' WHEN 'MS-SQL' THEN 'MS-SQL is developed by Microsoft Corporation.' END AS Description FROM Guru99
Resultado: El siguiente diagrama explica el flujo de ejecución de un CASE SIMPLE SIN OTRO.
Pregunta 2: CASE SIMPLE con la opción ELSE.
SELECT Tutorial_ID, Tutorial_name, CASE Tutorial_name WHEN 'SQL' THEN 'SQL is developed by IBM' WHEN 'PL/SQL' THEN 'PL/SQL is developed by Oracle Corporation.' WHEN 'MS-SQL' THEN 'MS-SQL is developed by Microsoft Corporation.' ELSE 'This is NO SQL language.' END AS Description FROM Guru99
Resultado: El siguiente diagrama explica el flujo de una ejecución de CASE SIMPLE con ELSE.
Setencia CASE en SQL DE BÚSQUEDA
La sintaxis para el CASE de búsqueda
CASE WHEN <Boolean_Expression_1> THEN Statement_1 WHEN <Boolean_Expression_2> THEN Statement_2 . . WHEN <Boolean_Expression_N> THEN Statement_N [ELSE Statement_Else] END AS [ALIAS_NAME]
Seo
- El parámetro Boolean_Expression_1,… indica la expresión que se evaluará para VERDADERO o FALSO.
- Los parámetros Statement_1, Statement_2 … indican los Statements que se ejecutarán si el resultado correspondiente es TRUE Boolean_Expression_1, Boolean_Expression_2.
- En resumen, la condición es Boolean_Expression_1, … y ACTION es la ejecución de Statement_N si boolean_Expression_1 es TRUE.
- ALIAS_NAME es opcional y el resultado de la instrucción CASE se llama alias. Se usa principalmente cuando usamos CASE en la cláusula de selección.
Reglas del CASE de búsqueda:
- A diferencia del CASE simple, el CASE de búsqueda no se limita solo a la verificación de igualdad, sino que permite la expresión booleana.
- Se considera la expresión booleana, para comenzar desde la primera expresión booleana, es decir, expresión_booleana_1. El siguiente es el enfoque de ejecución:
- Si Boolean_expression_1 es TRUE, luego QUÉ… Omita estas declaraciones y FINALICE la ejecución de CASE inmediatamente.
- Si Boolean_expression_1 es FALSE, entonces Boolean_expression_2 se evalúa para la condición TRUE. Este proceso de evaluación de Boolean_expression continuará hasta que regrese una de las TRUE Boolean_expression.
- Si nada coincide, el control pasa a la instrucción ELSE y se ejecuta Statement_Else.
- Like Simple Case ELSE también es opcional para la búsqueda.
- Si ELSE no está presente y ninguna de las expresiones Boolean_expression TRUE devuelve, se mostrará Null.
Ilustración de abajo flujos de ejecución CASE de búsqueda.
Ejemplos:
Pregunta 1: CASE BUSCADO sin la opción NINGUNA OTRA
SELECT Tutorial_ID, Tutorial_name, CASE WHEN Tutorial_name="SQL" THEN 'SQL is developed by IBM' WHEN Tutorial_name="PL/SQL" THEN 'PL/SQL is developed by Oracle Corporation.' WHEN Tutorial_name="MS-SQL" THEN 'MS-SQL is developed by Microsoft Corporation.' END AS Description FROM Guru99
Resultado: Debajo del diagrama explica el flujo de ejecución de El CASE BUSCADO le NINGUNA OTRA.
Pregunta 2: CASE BUSCADO con el DEMÁS elección.
SELECT Tutorial_ID, Tutorial_name, CASE WHEN Tutorial_name="SQL" THEN 'SQL is developed by IBM' WHEN Tutorial_name="PL/SQL" THEN 'PL/SQL is developed by Oracle Corporation.' WHEN Tutorial_name="MS-SQL" THEN 'MS-SQL is developed by Microsoft Corporation.' ELSE 'This is NO SQL language.' END AS Description FROM Guru99
Resultado: Debajo del diagrama explica el flujo de ejecución Delaware EL CASEle DEMÁS.
Diferencia entre el enfoque de ejecución: SIMPLE y BÚSQUEDA DE CASE.
Tenemos que vigilar CASE SIMPLE ejemplo a continuación:
SELECT Tutorial_ID, Tutorial_name, CASE Tutorial_name WHEN 'SQL' THEN 'SQL is developed by IBM' WHEN 'PL/SQL' THEN 'PL/SQL is developed by Oracle Corporation.' WHEN 'MS-SQL' THEN 'MS-SQL is developed by Microsoft Corporation.' ELSE 'This is NO SQL language.' END AS Description FROM Guru99
Seo ‘Tutorial_name’ Es parte de un estudio de CASE . Luego ‘Tutorial_name’ el valor se compara con cada CUANDO sus valores, es decir ‘SQL’ … hasta que ‘Tutorial_name’ coincida con los valores de NOW.
En cambio, CASE DE BÚSQUEDA ejemplo no Interpretación del CASE:
SELECT Tutorial_ID, Tutorial_name, CASE WHEN Tutorial_name="SQL" THEN 'SQL is developed by IBM' WHEN Tutorial_name="PL/SQL" THEN 'PL/SQL is developed by Oracle Corporation.' WHEN Tutorial_name="MS-SQL" THEN 'MS-SQL is developed by Microsoft Corporation.' END AS Description FROM Guru99
Aquí todo CUANDO una declaración Hay un Condicional Expresión booleana. Todas Expresión booleana es decir, Tutorial_name = «SQL», … se evalúa VERDADERO FALSO a el primer booleano una expresión que evalúa CIERTO.
Diferencia entre CASE simple y CASE de búsqueda
CASE simple | CASE de búsqueda |
La palabra clave CASE sigue inmediatamente a CASE_Expression y antes de la instrucción WHEN.
P.ej: |
La palabra clave del CASE sigue a la declaración WHY, y no hay expresión entre CASE y WHY.
P.ej: |
En un CASE simple, hay un VALOR para cada declaración POR QUÉ. Estos valores: Value_1, Value_2 … se comparan secuencialmente con CASE_Expression individual. El resultado se evalúa para la condición VERDADERO / FALSO para cada declaración POR QUÉ.
P.ej: |
En el CASE de búsqueda, existe Boolean_Expression para cada declaración WHY. Boolean_Expressions: Boolean_Expression_1, Boolean_Expression_2,… evalúa la condición VERDADERO / FALSO para cada instrucción WHY.
P.ej: |
Un CASE simple solo admite una verificación de igualdad. Es decir, si CASE_Expression = VALUE_1, VALUE_2…
P.ej: |
Con Boolean_Expression_N, Search Case admite cualquier operación que dé como resultado un valor booleano. Incluye un operador que es igual y no idéntico al operador.
P.ej: |
Sentencia CASE en SQL anidado: CASE EN OTRO IF
Nosotros podemos usar CASE adentro SI OTRO. A continuación se muestra el ejemplo de código MS-SQL
DECLARE @Flight_Ticket int; SET @Flight_Ticket = 190; IF @Flight_Ticket > 400 PRINT 'Visit Nearby Tourist Location'; ELSE BEGIN SELECT CASE WHEN @Flight_Ticket BETWEEN 0 AND 100 THEN 'Visit Los Angeles' WHEN @Flight_Ticket BETWEEN 101 AND 200 THEN 'Visit New York' WHEN @Flight_Ticket BETWEEN 201 AND 400 THEN 'Visit Europe' END AS Location END
En el ejemplo anterior es un MEJOR CASE dentro de SI … OTRA declaración:
Primero, se ejecutará la instrucción IF y, si la condición es falsa, se ejecutará la instrucción ELSE.
Otro CASE incrustado en el interior. Dependiendo del valor del boleto aéreo, se mostrará uno de los siguientes resultados:
- El sistema ‘Visitar sitio turístico cercano’ se imprimirá si los boletos de avión cuestan> $ 400
- El sistema imprimirá ‘Visite Los Ángeles’ si los boletos de avión están ENTRE $ 0 Y $ 100
- El sistema ‘Visit New York’ imprimirá si los boletos de avión cuestan ENTRE $ 101 Y $ 200
- El sistema ‘Visit Europe’ imprimirá si los boletos de avión tienen un valor ENTRE $ 201 Y $ 400
CASE anidado: CASE dentro de CASE
Podemos usar CASE dentro de CASE. A continuación se muestra el código MS-SQL de ejemplo
DECLARE @Flight_Ticket int; SET @Flight_Ticket = 250; SELECT CASE WHEN @Flight_Ticket >= 400 THEN 'Visit Nearby Tourist Location.' WHEN @Flight_Ticket < 400 THEN CASE WHEN @Flight_Ticket BETWEEN 0 AND 100 THEN 'Visit Los Angeles' WHEN @Flight_Ticket BETWEEN 101 AND 200 THEN 'Visit New York' WHEN @Flight_Ticket BETWEEN 201 AND 400 THEN 'Visit Europe' END END AS Location
En el ejemplo anterior, se aplica un CASE en otra instrucción CASE:
El sistema comienza a ejecutar el CASE externo. Si Flight_Ticket se ejecuta <$ 400, entonces CASE adentro.
Dependiendo del valor del boleto aéreo, se mostrará uno de los siguientes resultados:
- El sistema imprimirá ‘Visitar sitio turístico cercano’ si los boletos de avión cuestan> $ 400
- El sistema imprimirá ‘Visite Los Ángeles’ si los boletos de avión están ENTRE $ 0 Y $ 100
- El sistema ‘Visit New York’ imprimirá si los boletos de avión cuestan ENTRE $ 101 Y $ 200
- El sistema ‘Visit Europe’ imprimirá si los boletos de avión tienen un valor ENTRE $ 201 Y $ 400
Sentencia CASE en SQL a actualizar
Supuesto: suponga que tenemos la tabla como ‘Guru99’ con dos columnas y cuatro filas como se muestra a continuación:
Usaremos una tabla ‘Guru99’ en ejemplos adicionales
Podemos usar CASE para actualizar. A continuación se muestra un ejemplo de código MS-SQL:
UPDATE Guru99 SET Tutorial_Name = ( CASE WHEN Tutorial_Name="SQL" THEN 'Structured Query language.' WHEN Tutorial_Name="PL/SQL" THEN 'Oracle PL/SQL' WHEN Tutorial_Name="MSSQL" THEN 'Microsoft SQL.' WHEN Tutorial_Name="Hadoop" THEN 'Apache Hadoop.' END )
El ejemplo anterior usa CASE en la instrucción Update.
Dependiendo del valor de Tutorial_Name, la columna Tutorial_Name recibirá la actualización con THEN Statement.
- Si Tutorial_Name = «SQL» PERO actualice Tutorial_Name a ‘Lenguaje de consulta estructurado’
- Si Tutorial_Name = «PL / SQL» PERO actualice Tutorial_Name a ‘Oracle PL / SQL’
- Si Tutorial_Name = «MSSQL» PERO actualice Tutorial_Name a ‘Microsoft SQL’
- Si Tutorial_Name = «Hadoop» PERO actualice Tutorial_Name a ‘Apache Hadoop’
Consultemos la tabla Guru99 para verificar el valor de actualización:
Sentencia CASE en SQL Por orden de
Podemos usar CASE para realizar pedidos. A continuación se muestra un ejemplo de código MS-SQL:
Declare @Order Int; Set @Order = 1 Select * from Guru99 order by CASE WHEN @Order = 1 THEN Tutorial_ID WHEN @Order = 2 THEN Tutorial_Name END DESC
CASE se utiliza aquí para realizar pedidos.
@Order se establece en 1 y como la primera vez que la expresión booleana se considera TRUE, Tutorial_ID se selecciona para Order by Appointment
¡Datos interesantes!
- Un CASE se puede incrustar en otro CASE y en otra instrucción IF… ELSE.
- Además de SELECT, CASE se puede usar con otras cláusulas SQL como UPDATE, COMMAND BY.
Resumen:
- En MS SQL, hay dos tipos de CASE: CASE simple y CASE de búsqueda
- ELSE es opcional en la instrucción CASE.