Função Case Mysql
Temos duas sintaxes para a função:
Sintaxe 1 - compara a expressão especificada (valor) com um conjunto de expressões (WHEN) e retorna o valor especificado (THEN). Se nenhuma comparação for válida ele retorna o valor especificado determinado pelo ELSE. Não é obrigatória a utilização do ELSE, caso ele não seja especificado e não seja encontrada nenhuma correspondência entre os valores o retorno será NULL.
CASE valor
WHEN comparação THEN retorno (repetir para cada comparação)
[ELSE retorno]
END
Ex.:
SELECT
CASE contrato
WHEN 1 THEN ‘CLT‘
WHEN 2 THEN ‘PJ‘
ELSE ‘Inválido‘
END;
FROM programadores p;
Sintaxe 2 – Determina seu retorno utilizado expressões booleanas. A primeira condição verdadeira determina o resultado. Caso nenhuma condição seja atendida, o retorno vem do ELSE e se ele não for especificado o resultado é NULL.
Ex.:
CASE
WHEN condition THEN retorno (repetir para cada condição)
[ELSE retorno]
END
Ex.:
SELECT id_programador,
CASE
WHEN salario <= 1000 THEN ‘Aumento 10%‘
WHEN salario >1000 AND salario < 5000 THEN ‘Aumento 5%‘
ELSE ‘Aumento 2%‘
END
FROM programadores p;
A utilização de ambas as sintaxes não estão restritas apenas ao SELECT. Segue abaixo, a aplicação da segunda sintaxe na atualização do salário do programadores.
UPDATE
programadores
SET
salario = salario +
CASE
WHEN salario <= 1000 THEN ((salario*10)/100)
WHEN salario >1000 AND salario < 5000 THEN ((salario*5)/100)
ELSE ((salario*2)/100)
END;
Att,
Leonardo Rocha
Nenhum comentário:
Postar um comentário
Informações de contato
Nome:
E-mail:
Telefone: