Sentencia CASE en SQL Server: ejemplo T-SQL

Si tienes dudas sobre la sentencia Case en SQL en este artículo intentaremos aclarártelas todas

comando case sql

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ónAcciones 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 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.

  1. CASE simple
  2. CASE DE BÚSQUEDA

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.

Manejo de una declaración de 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.

Declaración de CASE de operación 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 simpleCASE de búsqueda
La palabra clave CASE sigue inmediatamente a CASE_Expression y antes de la instrucción WHEN.

P.ej:
CASE
CUANDO Value_1 PERO Statement_1 …

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

P.ej:
CASE POR QUÉ PERO Statement_1…

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:
CASE
CUANDO Value_1 PERO Statement_1 …
CUANDO Valor_2 PERO Declaración_2 …

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:
CASE
CUÁNDO PERO Statement_1…
CUÁNDO PERO Declaración_2…

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

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

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.

Resumen
Sentencia CASE en SQL Server: ejemplo T-SQL
Nombre del artículo
Sentencia CASE en SQL Server: ejemplo T-SQL
Descripción
Si tienes dudas sobre la sentencia Case en SQL en este artículo intentaremos aclarártelas todas
Autor
Publisher Name
ebooksonline.es
Publisher Logo

Deja un comentario

Tu dirección de correo electrónico no será publicada.