Sunteți pe pagina 1din 8

 Contacto    

 BLOG   PRODUCTOS  COMIENZA AQUÍ

 BLOG   PRODUCTOS  COMIENZA AQUÍ

¿Qué hace la Sentencia


Case en SQL?
 James Revelo  junio 11, 2014
Obtén
Contenido
Exclusivo
Aprende a
programar apps
Android con tips y
recursos que solo
comparto con
los suscriptores de
La sentencia case de SQL es una estructura condicional que mi boletín privado
ejecuta ciertas instrucciones dependiendo de la validez de
alguna expresión. Normalmente se usa cuando surgen
múltiples condiciones donde se compara una expresión con
una constante literal. Por lo que se considera una alternativa a Correo
la sentencia if en estos casos.

SUSCRIBIRSE

¿En Que Momento Sé Que Debo Usar La


Sentencia CASE?

Cuando deseas comparar una expresión con varios casos ¿Qué buscas?
específicos, donde cada caso tomará un rumbo distinto. Seria
como decir: "¿Se cumple el caso 1?…¿no?, entonces ¿se cumple
Search
el caso 2?…¿no?,…, se cumple el enésimo  caso?…¿no?. Si se
cumple un caso, entonces se ejecutan las instrucciones dadas y
termina el case.

Lo Más Popular
Android Push
Red WAN Android
Push Notifications
Inteligente Con Firebase
Notifications
con Cloud
Gestione el crecimiento de Firebase Messaging
su red WAN con confianza Cloud
con Level3. Entre Messaging

Google Google Maps


level3.com/Red-WAN
Maps Android Api
Android v2: Guía De
API v2 Mapas

¿Como Implemento La Sentencia CASE?


Ubicación Y¿Cómo

Depende!, la sentencia CASE posee dos formas de ser escrita Obtener La
Reconocimiento
en SQL. La primer forma es un estilo "simple", donde el objetivo
de ActividadUbicación
en De
es comparar una expresión con una serie de constantes Tus Usuarios
Android
literales hasta que dicha expresión coincida en algún caso para En Android?
poder ejecutar las sentencias. Veamos como implementarla en
Sql Server y Myqsl: Admob En
Tutorial
Sql Server: AdMob Android:
Android Añadir
Anuncios A
 Una App
CASE <expresión_de_entrada>
Móvil
WHEN <valor1> THEN <resultado1>
WHEN <valor2> THEN <resultado2>
Tutorial Controles:
...
WHEN <valorN> THEN <resultadoN> de Tutorial De
ELSE <resultadoX> Botones Botones En
END Android
en
Android

Mysql RadioButton
RadioButton
en Android En Android:
Controles De
CASE <expresión_de_entrada>
 Entrada
WHEN <valor1> THEN
intrucciones Controles: Tutorial De
WHEN <valor2> THEN EditText En Android
instrucciones
EditText
...
WHEN <valorN> THEN en
instrucciones Android
ELSE
instrucciones
END CASE; CheckBox CheckBox:
en Controles En
Android Android

Sql Server restringe la aplicación de la estructura CASE a que se


ejecute dentro de sentencias SELECT, UPDATE, SET, etc. Pero
Tutorial de
no es permitido ejecutar la estructura individualmente como
TextInputLayout
hacíamos con IF…ELSE. Adicionalmente cada caso retorna un en Android
solo valor preestablecido.
TextInputLayout En
En MySQL la sentencia CASE tiene alcances distintos. Este 
Android: Material Design
gestor permite que la estructura condicional se ejecute
independientemente sin tener que apoyarse en otras Tutorial Crear Login
sentencias. Además cada vez que se cumple una condición Retrofit: En Android
podemos ejecutar varias instrucciones y no solo devolver un Login De Con Retrofit
valor como lo hace SQL Server. SaludMock

¿Podrías Usar Un Ejemplo Para


Aclararlo? 

Por supuesto!, consideremos el siguiente enunciado:


Los clientes de una compañía tienen asignado un atributo
llamado  prioridad, que hace referencia al volumen de sus
compras totales en un periodo de tiempo. Existen 3 niveles de
prioridad: ALTO, MEDIO y BAJO. Donde cada uno es
representado por su inicial ‘A’, ‘M’ y ‘B’ respectivamente. Muestre
el nombre completo de cada prioridad según sea la letra que
posea cada cliente.
Veamos la solución en MySQL y SQL Server:
Sql Server:

SELECT CASE PRIORIDAD



WHEN 'A' THEN 'ALTO'
WHEN 'M' THEN 'MEDIO'
WHEN 'B' THEN 'BAJO'
ELSE 'NN'
END
FROM CLIENTE

Mysql

CASE PRIORIDAD

WHEN 'A' THEN
SELECT 'ALTO';
WHEN 'M' THEN
SELECT 'MEDIO';
WHEN 'B' THEN 
SELECT 'BAJO';
ELSE
SELECT 'NN';
END CASE;

En SQL Server debemos embeber el case dentro de una


sentencia SELECT para poder usarlo. En cambio en MySQL
podemos usarlo individualmente similar a lenguajes
procedurales como C++ o Java.

Dices Que Hay Otra Forma De Usar La


Sentencia CASE, ¿Cual Es?

Se le llama case de búsqueda. Su estructura cambia pero


cumple exactamente las mismas funciones. Esta vez los
condicionales no serán literales, si no expresiones
condicionales formadas por operadores de comparación y
operadores lógicos. Miremos un ejemplo:
Suponga que existe una variable llamada totalVentas, la cual
contiene el total acumulado de todas las ventas hechas por un
vendedor de su  compañía en el mes actual. Si el vendedor
obtuvo entre 1000 y 2000 dolares, asignele una comisión del 2%
de las ventas a su salario. Si vendió entre 2001 y 3000 dolares,
asignele una comisión del 3%  y si vendió mas de 3001 dolares,
asignele una  comisión  del 7%.Usaremos la sentencia CASE de
búsqueda para representar esos 3 casos. Construiremos cada
caso con el operador BETWEEN o algún operador de
comparación.

Solución en Sql Server:


UPDATE VENDEDOR
SET SALARIO = CASE
WHEN @totalVentas BETWEEN 1000 AND 2000 THEN
SALARIO + @totalVentas * 0.02
WHEN @totalVentas BETWEEN 2001 AND 3000 THEN
SALARIO + @totalVentas * 0.03 
WHEN @totalVentas >=3001 THEN
SALARIO +@totalVentas * 0.07
END

Solución en Mysql

CASE

WHEN totalVentas BETWEEN 2000 AND 3000 THEN
UPDATE VENDEDOR
SET SALARIO = SALARIO + totalVentas * 0.02;
WHEN totalVentas BETWEEN 2001 AND 3000 THEN
UPDATE VENDEDOR
SET SALARIO = SALARIO + totalVentas * 0.03;
WHEN totalVentas >=3001 THEN
UPDATE VENDEDOR
SET SALARIO = SALARIO + totalVentas * 0.07;
END CASE;

Como notas, ya no usamos una expresión de entrada luego de


la palabra CASE, simplemente ubicamos cada condición
compuesta después del WHEN y enseguida ubicamos lo que
deseamos hacer en caso de cumplirse.
Para Sql Server el CASE de búsqueda debe estar inmiscuido
dentro de una sentencia, en este caso era la sentencia UPDATE.
En cambio para MySQL, puede presentarse de forma individual,
además de que podemos usar distintos tipos de instrucción
luego del THEN.

Artículos Relacionados

La Función La Función TIME La Función


WEEKOFYEAR De De MySQL TIME_TO_SEC De
MySQL MySQL


La Función La Función La Función
YEARWEEK De TIME_FORMAT De CONCAT De
MySQL MySQL MySQL
Comentarios Comunidad 
1 Login

ordenar por el mejor


 Recomendar 2 ⤤ Share

Comienza la discusión...

Sé el primero en comentar.

TAMBIÉN EN HERMOSA PROGRAMACIÓN

¿Cómo Obtener La Ubicación Ideas Para Nombrar Tus


De Tus Usuarios En Android? Archivos Y Código Android
37 comments • hace 5 meses• 5 comments • hace 4 meses•

Steve — Eres un capo Rubén Barreto Bárzaga —
James, como comentan James..buenísimo
abajo tus artículos son de lo material..gracias por tu
mejor que se encuentra en constante apoyo..espero
8 Pasos Para Diseñar Tu App Productos 3: Detalle De
Base De Datos Productos (Master-Detail)
4 comments • hace 6 meses• Con
12 SQLite• hace un día•
comments
Juan Gonzalez — Todo muy Miguel Calvo — Agradecerte
bien, en cuanto pague me la continuidad del tutorial
comunique con el e-mail este finde semana mirame
que me proporcionaron y en para descargarlo y …
✉ Subscribe d Agrega Disqus a tu sitio Add Disqus Add
🔒 Privacidad

Hermosa Programación: +50 Tutoriales Desarrollo Android Copyright © 2017.

S-ar putea să vă placă și