Como usar a expressão caso 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. Esta forma é útil numa 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 value1 ENTÃO value2 result1WHEN ENTÃO result2 ... QUANDO 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 a value1 mas é igual a 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. Novamente, se o 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 precedidos pela abreviatura correta para cada categoria. A seguinte declaração faz o trabalho:

Select Case `geral`, então coronel Gen.`WHEN `RANKWHEN` então `Col.`WHEN `tenente-coronel` então `Lt. `Capitão` Col.`WHEN `major`THEN` Maj.`WHEN THEN `Capt.`WHEN `primeiro-tenente` então` 1º. Lt.`WHEN `segundo-tenente` então `2º. Lt.`ELSE NULLEND, OFICIAIS LAST_NAMEFROM -


O resultado é uma lista semelhante ao exemplo a seguir:

Capt. MidnightCol. SandersGen. WashingtonMaj. DisasterNimitz

Video: 3 - T-SQL - CREATE DATABASE - Criar Banco de Dados - SQL Server

Chester Nimitz foi um almirante da Marinha dos Estados Unidos durante a Segunda Guerra Mundial. Porque sua posição não está listado no 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 seguinte tabela.

Video: Tutorial SQL Server em Portugues: Instalando Banco de Dados Adventure Works 2012

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:

ACTUALIZAÇÃO OFFICERSSET POSTO = PROCESSO: 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` primeiro lieutenant`WHEN 7 THEN `segundo tenente `QUANDO 8 Então NULLENDWHERE LAST_NAME =: officer_last_name -

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

CASEWHEN test_value = valor1 THEN result1WHEN test_value = value2 ENTÃO result2 ... QUANDO test_value = valorn ENTÃO resultarnELSE resultadoXFIM

Publicações relacionadas