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

Puede utilizar una forma más compacta del SQL CASO expresión si usted está comparando un valor de prueba para la igualdad con una serie de otros valores. Esta forma es útil dentro de un SELECT o ACTUALIZACIÓN declaración si una tabla contiene un número limitado de valores de una columna y desea asociar un valor de resultado correspondiente a cada uno de los valores de la columna.

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

CASO prueba_valueCUANDO valor1 valor2 result1WHEN ENTONCES ENTONCES result2 ... CUANDO valorn ENTONCES resultarnResultado 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. Una vez más, si el opcional ELSE cláusula no está presente y ninguno de los valores de comparación coincide con el valor de la prueba, la expresión recibe un valor nulo.

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

SELECT CASE entonces Coronel 'general' 'Gen.'WHEN' RANKWHEN 'ENTONCES' 'teniente coronel Col.'WHEN ENTONCES "Lt. Col.'WHEN 'major'THEN' Maj.'WHEN 'capitán' ENTONCES primer teniente 'Capt.'WHEN' 'ENTONCES "primero. 'Subteniente' Lt.'WHEN ENTONCES "segunda. Lt.'ELSE NULLEND, FUNCIONARIOS LAST_NAMEFROM -

El resultado es una lista similar a la del siguiente ejemplo:

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 la CASO expresión, el ELSE cláusula de no le da un título.

Para 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 'Midnight' y que la variable new_rank contiene un número entero (4) Que corresponde al nuevo rango de la 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 mediante 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 "subteniente 'CUANDO 8 ENTONCES NULLENDWHERE LAST_NAME =: officer_last_name -

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

CASEWHEN test_value = Valor1 ENTONCES result1WHEN test_value = Valor2 ENTONCES CUANDO result2 ... test_value = Valorn ENTONCES resultarnResultado ELSEXFIN



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