Cómo utilizar la expresión sql caso con los valores

Video: 2ª Clase SQL Server - Tablas y datetime

Se puede utilizar una forma más compacta del SQL CASO expresión si está comparando un valor de prueba para la igualdad con una serie de otros valores. Esta forma es útil dentro de una SELECCIONAR o ACTUALIZAR declaración si una tabla contiene un número limitado de valores de una columna y se desea asociar un valor de resultado correspondiente a cada uno de esos valores de columna.

Si utiliza CASO de esta manera, la expresión tiene la siguiente sintaxis:

CASO prueba_valorCUANDO ENTONCES valor1 valor2 result1WHEN ENTONCES ... result2 cuando el valornorte ENTONCES resultarnorteresultado ELSExFIN

Si el valor de la prueba (test_value) es igual a valor1, entonces la expresión toma el valor resultado1. Si tests_value no es igual a valor1 pero es igual a valor2, entonces la expresión toma el valor result2. La expresión trata cada valor de comparación, a su vez, todo el camino hasta valorN, hasta que se alcanza un partido.

Si ninguno de los valores de comparación es igual al valor de la prueba, entonces la expresión toma el valor resultx. De nuevo, si el opcional MÁS cláusula no está presente y ninguno de los valores de comparación coincide con el valor de prueba, la expresión recibe un valor nulo.

Para entender cómo funciona la forma del valor, considere un caso en el que hay una tabla que contiene los nombres y rangos de varios oficiales militares. ¿Quieres una lista de los nombres precedidos por la abreviatura correcta para cada rango. La siguiente declaración hace el trabajo:

Video: Cursos SQL SERVER #11 identity parte 1

SELECT CASE `general` entonces Coronel `Gen.`WHEN `RANKWHEN` y luego` Col.`WHEN `Teniente Coronel` y luego `Lt. Col.`WHEN `major`THEN` Maj.`WHEN `capitán` y luego `Capt.`WHEN `primer teniente` y luego` primero. Lt.`WHEN `subteniente` y luego `segundo. Lt.`ELSE NULLEND, OFICIALES LAST_NAMEFROM -

El resultado es una lista similar al ejemplo siguiente:

Capt. MidnightCol. SandersGen. WashingtonMaj. DisasterNimitz

Chester Nimitz fue un almirante de la Marina de los Estados Unidos durante la Segunda Guerra Mundial. Debido a que su rango no aparece en el CASO expresión, el MÁS cláusula no le da un título.

Para dar otro ejemplo, supongamos que el capitán medianoche consigue un ascenso a mayor y quieres actualizar la base de datos OFICIALES consecuencia. Supongamos que la variable officer_last_name contiene el valor `Medianoche` y que la variable new_rank contiene un entero (4) Que corresponde al nuevo rango de medianoche, de acuerdo con la siguiente tabla.

New_RankRango
1general
2coronel
3teniente coronel
4mayor
5capitán
6Primer teniente
7alférez
8NULO

Puede grabar la promoción con el siguiente código SQL:

ACTUALIZACIÓN OFFICERSSET RANK = CASO: new_rankWHEN 1 ENTONCES `general`WHEN 2 ENTONCES` colonel`WHEN 3 ENTONCES `teniente colonel`WHEN 4 ENTONCES` major`WHEN 5 ENTONCES `captain`WHEN 6 ENTONCES` primera lieutenant`WHEN 7 ENTONCES `segundo teniente `CUANDO ENTONCES 8 NULLENDWHERE APELLIDOS =: officer_last_name -

Una sintaxis alternativa para el CASO expresión con valores es:

Video: Consultas SQL-TOAD-ORACLE

CASEWHEN test_value = valor1 THEN result1WHEN test_value = valor2 ... ENTONCES CUANDO RESULT2 test_value = valornorte ENTONCES resultarnorteresultado ELSExFIN
Artículos Relacionados