Trabalhando com IF… ELSE e CASE – SQL Server


 

 IF e ELSE é controle condicional de fluxo básico usado para testar condições quando um comando Transact-SQL é executado.

O IF e ELSE funcionam similarmente aos comandos de mesmo nome usados em linguagens como C# por exemplo, para testar condições de execução de comandos.

Impõe condições na execução de uma instrução Transact-SQL. A instrução que segue uma palavra-chave IF sua condição será executada se a condição for satisfeita: a expressão Booleana retorna TRUE.

A palavra-chave opcional ELSE introduz outra instrução que será executada quando a condição IF não for satisfeita: a expressão Booleana retorna FALSE.

Quando uma variável é declarada, seu valor primeiramente é definido como NULL.
Para atribuir um valor à uma variável, use a instrução SET.
Este é o método preferido de atribuir um valor a uma variável. Uma variável também pode ter um valor atribuído com uma instrução SELECT, depende da necessidade de cada desenvolvedor.

Exemplo:

-- Declaração da variável
DECLARE @Idade INT;

-- Atribuição do valor a variável
SET @Idade = 23;

-- Se... for menor que 18 anos
IF @Idade < 18
PRINT 'Menor que 18 anos';

-- Se não ...
ELSE
IF @Idade >18
PRINT 'Maior que 18 anos';

Resultado :

Screenshot_69

CASE

A expressão CASE é usada para avaliar várias condições e retornar um valor único para cada condição. Por exemplo, ela permite mostrar um valor alternativo a ser exibido dependendo do valor de uma coluna. Essa alteração nos dados é temporária. Portanto, não há nenhuma alteração permanente nos dados.

CASE pode ser usada em qualquer instrução ou cláusula que permita uma expressão válida. Por exemplo, você pode usar CASE em instruções, como SELECT, UPDATE, DELETE e SET, e em cláusulas, como select_list, IN, WHERE, ORDER BY e HAVING.

A expressão CASE tem dois formatos:

  • A expressão CASE simples compara uma expressão com um conjunto de expressões simples para determinar o resultado.
  • A expressão CASE Searched (case pesquisada) avalia um conjunto de expressões boolianas para determinar o resultado.

A expressão CASE consiste em:

  • A palavra-chave CASE.
  • O nome da coluna a ser transformada.
  • As cláusulas WHEN que especificam as expressões a serem pesquisadas e as cláusulas THEN que especificam as expressões pelas quais substituí-las.
  • Uma cláusula ELSE opcional que define a expressão retornada, se nenhuma operação de comparação for avaliada como TRUE.
  • A palavra-chave END.
  • Uma cláusula AS opcional que define um alias para a expressão CASE.

O SQL Server permite apenas até 10 níveis de aninhamento em expressões CASE.

Exemplo – Case simples

O exemplo a seguir usa a expressão CASE para alterar a exibição do tipo de conta bancaria e torná-las mais compreensíveis.

DECLARE @ContaBancaria AS INT -- Declaracao de variavel
SET @ContaBancaria = 001 -- Atribuindo um valor a variavel

SELECT
CASE @ContaBancaria
WHEN 001 THEN
'Conta Corrente'
WHEN 002 THEN
'Conta Poupança'
WHEN 013 THEN
'Conta Jurídica'
ELSE
'Outro tipo de conta'

END AS 'Tipo de Conta'

Resultado: Retornou “Conta Corrente” pois defini o valor da variável como ‘001’

Screenshot_72

Exemplo – Case Searched (pesquisada). 

O exemplo a seguir exibe o preço da lista como um comentário de texto com base na faixa de preços de um produto, usei como base o banco de dados de teste da Microsoft, AdventureWorks2012 aonde você pode baixar aqui

SELECT [ProductID]
,[Name] AS Nome
,[ListPrice] =
CASE
WHEN ListPrice = 0 THEN 'Não está a venda'
WHEN ListPrice < 50 THEN 'Abaixo de $50'
WHEN ListPrice >= 50 and ListPrice < 250 THEN 'Abaixo de $250'
WHEN ListPrice >= 250 and ListPrice < 1000 THEN 'Abaixo de $1000'
ELSE 'Acima de $1000'
END, 'Produtos' as Categoria
FROM [AdventureWorks2012].[Production].[Product]
ORDER BY Nome

A tabela possui 504 linhas, no entanto a figura abaixo é só para ilustrar o resultado.

Screenshot_70

Espero ter ajudado.

Valeu e até mais !!

🙂

Share on FacebookTweet about this on TwitterShare on LinkedIn


Escreva um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *