Saltar al contenido

Sentencia CASE en SQL Server: ejemplo T-SQL

Descripción general del caso 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 $ 100Visite Los Ángeles
Entre $ 100 y $ 200Visite Nueva York
Entre $ 200 y $ 400Visite Europa
No se cumplió ninguna de las condiciones anterioresPunto 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 CASO?

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 CASO.

  1. CASO simple
  2. CASO DE BÚSQUEDA

CASO simple

La sintaxis para un caso 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

Reglas de casos simples:

El siguiente diagrama muestra el flujo de ejecución del caso simple.

Manejo de una declaración de caso 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: CASO 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 CASO SIMPLE SIN OTRO.

Pregunta 2: CASO 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 CASO SIMPLE con ELSE.

CASO DE BÚSQUEDA

La sintaxis para el caso 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

Reglas del caso de búsqueda:

Ilustración de abajo flujos de ejecución Caso de búsqueda.

Declaración de caso de operación de búsqueda

Ejemplos:

Pregunta 1: CASO 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 CASO BUSCADO le NINGUNA OTRA.

Pregunta 2: CASO 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 CASO BUSCADO le DEMÁS.

Diferencia entre el enfoque de ejecución: SIMPLE y BÚSQUEDA DE CASO.

Tenemos que vigilar CASO 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 caso. 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, CASO DE BÚSQUEDA ejemplo no Interpretación del caso:


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 caso simple y caso de búsqueda

Caso simpleCaso de búsqueda

La palabra clave CASE sigue inmediatamente a CASE_Expression y antes de la instrucción WHEN.

P.ej:
CASO
CUANDO Value_1 PERO Statement_1 …

La palabra clave del caso sigue a la declaración WHY, y no hay expresión entre CASE y WHY.

P.ej:
CASO POR QUÉ PERO Statement_1…

En un caso 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:
CASO
CUANDO Value_1 PERO Statement_1 …
CUANDO Valor_2 PERO Declaración_2 …

En el caso 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:
CASO
CUÁNDO PERO Statement_1…
CUÁNDO PERO Declaración_2…

Un caso simple solo admite una verificación de igualdad. Es decir, si CASE_Expression = VALUE_1, VALUE_2…

P.ej:
CASO CUANDO Value_1 PERO Statement_1 … En el ejemplo anterior, la única operación que realiza el sistema es comprobar si Case_Expression = Value_1

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:
CASO POR QUÉ PERO Statement_1 … En el ejemplo anterior, un operador puede decir ‘igual a’ y ‘no igual a’ como A = B, A! = B.

CASO anidado: CASO EN OTRO SI

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 CASO 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 CASO incrustado en el interior. Dependiendo del valor del boleto aéreo, se mostrará uno de los siguientes resultados:

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 CASO externo. Si Flight_Ticket se ejecuta <$ 400, entonces CASE adentro.

Dependiendo del valor del boleto aéreo, se mostrará uno de los siguientes resultados:

CASO 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.

Consultemos la tabla Guru99 para verificar el valor de actualización:

CASO 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!

Resumen: