Como usar a expressão caso sql com valores
Você pode usar uma forma mais compacta do SQL CASO
Conteúdo
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_Rank | Classificação |
---|---|
1 | geral |
2 | coronel |
3 | tenente-coronel |
4 | principal |
5 | capitão |
6 | primeiro-tenente |
7 | segundo tenente |
8 | NULO |
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