Como utilizar a expressão CASE SQL com Valores

Você pode usar uma forma mais compacta do SQL CASO expressão se você está comparando um valor de teste para a igualdade com uma série de outros valores. Essa forma é útil dentro de um SELECIONAR ou ATUALIZAR declaração se uma tabela contém um número limitado de valores em uma coluna e você deseja associar um valor de resultado correspondente a cada um desses valores de coluna.

Se você usar CASO Desta forma, a expressão tem a seguinte sintaxe:

CASO teste_valorQUANDO ENTÃO value1 value2 result1WHEN ENTÃO result2 ... quando o valorn ENTÃO resultarnELSE resultadoxFIM

Se o valor de teste (test_value) é igual a value1, então a expressão assume o valor result1. E se tests_value não é igual value1 mas é igual value2, então a expressão assume o valor result2. A expressão tenta cada valor de comparação, por sua vez, todo o caminho para valorN, até atingir um jogo.

Se nenhum dos valores de comparação igual ao valor de teste, então a expressão assume o valor resultx. Mais uma vez, se a opcional OUTRO cláusula não está presente e nenhum dos valores de comparação corresponde ao valor de teste, a expressão recebe um valor nulo.

Para entender como a forma de valor funciona, considere um caso em que você tem uma tabela contendo os nomes e as patentes de vários oficiais militares. Você deseja listar os nomes precedido pela abreviatura correta para cada posto. A seguinte declaração faz o trabalho:

Select Case "geral" então Coronel 'Gen.'WHEN' RANKWHEN 'então' Col.'WHEN "tenente-coronel" depois "Lt. 'Capitão' Col.'WHEN 'major'THEN' Maj.'WHEN THEN 'Capt.'WHEN' primeiro-tenente 'então' primeiro. Lt.'WHEN "alferes" depois "2ª. Lt.'ELSE NULLEND, OFICIAIS LAST_NAMEFROM -

O resultado é uma lista semelhante ao exemplo que se segue:

Capt. MidnightCol. SandersGen. WashingtonMaj. DisasterNimitz

Chester Nimitz foi um almirante da Marinha dos Estados Unidos durante a Segunda Guerra Mundial. Porque sua posição não estiver listado na CASO expressão, o OUTRO cláusula de não dar-lhe um título.

Para outro exemplo, suponha capitão Meia-noite recebe uma promoção a major e você deseja atualizar o banco de dados OFICIAIS conformidade. Suponha que a variável officer_last_name contém o valor 'Midnight' e que a variável new_rank contém um número inteiro (4) Que corresponde ao novo posto de meia-noite, de acordo com a tabela a seguir.

New_RankClassificação
1geral
2coronel
3tenente-coronel
4principal
5capitão
6primeiro-tenente
7segundo tenente
8NULO

Você pode gravar a promoção usando o seguinte código SQL:

ATUALIZAÇÃO OFFICERSSET RANK = CASE: new_rankWHEN 1 THEN 'general'WHEN 2 THEN' colonel'WHEN 3 THEN 'tenente colonel'WHEN 4 THEN' major'WHEN 5 THEN 'captain'WHEN 6 THEN' primeira lieutenant'WHEN 7 THEN 'alferes 'QUANDO 8 Então NULLENDWHERE LAST_NAME =: officer_last_name -

Uma sintaxe alternativa para o CASO expressão com valores é:

CASEWHEN test_value = value1 ENTÃO result1WHEN test_value = value2 ENTÃO result2 ... quando test_value = valorn ENTÃO resultarnELSE resultadoxFIM

menu