1
resposta

Case When e If then

Para ficar mis claro, poderia me ajuda?

No caso case when eu coloco a variável Case when vdatanascimento < '20000101' then 'cliente novo'

no caso de if if vdatanascimento < '20000101' then set vresultado = 'CLIENTE VELHO';

no case when eu consigo colocar a resposta setada direto para me retornar o cliente novo na query, no if preciso setar uma outra variavel inteira ?

gostaria de entender melhor a diferença entra elas. Obrigado.

1 resposta

Olá Murilo, tudo bem? Sobre os blocos condicionais, Exemplo IF-ELSEIF: Verifica a variável saldo da conta, se o valor do saldo for maior que 50 mil, atribui Platinum ao tipo de cliente. Se o valor do saldo da conta estiver entre 10 mil e 50 mil, atribui Gold ao tipo de cliente. Se não atender nenhuma das opções anteriores, entra no else e atribui Silver ao tipo de cliente.

    IF saldoConta > 50000 THEN
        SET clienteTipo = 'PLATINUM';
    ELSEIF saldoConta <= 50000 AND saldoConta > 10000 THEN
        SET clienteTipo = 'GOLD';
    ELSE
        SET clienteTipo = 'SILVER';
    END IF;

Exemplo CASE WHEN: Existem outras formas de aplicar o CASE WHEN, porém encontrei está do codigo fonte e achei o exemplo bem didático. Verifica a variável sigla, caso o valor seja uma das opções PR, ou RS ou SC, atribui a regiao Sul e assim por diante.

CASE WHEN 
siglaEstado IN ('PR', 'RS', 'SC') THEN 'Sul'
     WHEN siglaEstado IN ('SP', 'RJ', 'ES', 'MG') THEN 'Sudeste'
     WHEN siglaEstado IN ('MT', 'MS', 'GO') THEN 'Centro-Oeste'
     WHEN siglaEstado IN ('BA', 'AL', 'SE', 'PB', 'PE', 'RN', 'CE', 'PI', 'MA') THEN 'Nordeste'
     WHEN siglaEstado IN ('AM', 'RR', 'AP', 'PA', 'TO', 'RO', 'AC') THEN 'Norte'
     ELSE '' END AS regiao

Espero ter ajudado!