SQL Server 2012 introduced a new built-in logical function SQL IIF. É uma forma abreviada de escrever lógica de declaração de caso ou lógica IF-ELSE.

exploramos a Declaração de caso em SQL no meu artigo anterior. Usamos uma declaração de caso para retornar um resultado baseado na condição definida. É semelhante a um Fi..Caso contrário … a declaração avalia uma expressão e devolve o resultado. A instrução do caso está disponível em quase todas as versões do servidor SQL.

vamos explorar esta função SQL IIF neste artigo.,

SQL Instrução IIF visão geral

Podemos usar o seguinte formato para escrever instrução Case logic em consultas SQL

SELECT CASE Expressão Quando expressão1, em Seguida, Result1 Quando expressão2, em Seguida, Result2 … ELSE Resultado FINAL

podemos escrever este código usando o SQL instrução IIF sintaxe como a seguinte.

IIF(boolean_expression, true_value, false_value)

  • Boolean_expression: o primeiro parâmetro na instrução SQL IIF é uma expressão booleana., Ele deve ser um válido expressão booleana mais que receber uma exceção
  • True_Value: Se o boolean_expression é VERDADEIRA, ele retorna o valor especificado no true_value parâmetro
  • False_Value: Se o boolean_expression é FALSO, ele retorna o valor especificado no false_value parâmetro

Vamos explorar o SQL instrução IIF usando exemplos.

exemplo 1: declaração SQL IIF para a comparação de valores inteiros

no exemplo seguinte, expressão booleana especificada return False (2>3 não é verdadeiro)., Due to this, it returns the value specified in the false_value parameter.

1
SELECT IIF(2 > 3, ‘TRUE’, ‘FALSE’ )

Similarly, if the condition is TRUE (5>3 is TRUE) so it returns the value of true_value parameter.,

1
SELECT IIF(5 > 3, ‘TRUE’, ‘FALSE’ )

Example 2: SQL IIF statement with variables

In the following example, we specified two integer variables and assigned values. We use variables for comparison in the IIF statement.,

1
2

DECLARE @A INT = 80, @B INT = 70
SELECT IIF(@A >= @B, ‘PASS’, ‘FAIL’ )

The specified condition (80>70) is TRUE, so it returns the value PASS.,

exemplo 3: declaração SQL IIF para comparar duas cadeias de caracteres

no exemplo seguinte, queremos comparar os dados de cadeia de caracteres usando a declaração SQL IIF. Queremos saber o gosto da pessoa com base no nome da pessoa.,

1
2

DECLARE @Person Varchar(100) = ‘Raj’
SELECT IIF(@Person=’Raj’,’Likes Apple’,’NA’)

We can specify multiple conditions in SQL IIF statement as well.,i>

  • Else all other persons like orange
  • 1
    2

    DECLARE @Person Varchar(100) = ‘Raj’
    SELECT IIF(@Person in(‘Raj’, ‘Mohan’),’Likes Apple’,’Likes Orange’)

    The query should return Likes Orange if the person name is not in the IN clause., No exemplo a seguir, a pessoa Vinay não existe na variável @Person, por isso devolve o valor de uma cláusula falsa.

    Exemplo 4: Aninhadas SQL instrução IIF

    podemos utilizar Aninhado SQL instrução IIF, bem como para especificar várias condições

    neste SQL função IIF, ele verifica a primeira condição e, se a condição for VERDADEIRA, ele retorna o valor. No nosso caso, é falso ( Vinay pessoa não corresponde com Raj).verifica para a outra condição e retorna resultados se é verdade.,

    Se nenhuma das condições for verdadeira, ele retorna o padrão de mensagem falsa.

    Exemplo 5: SQL instrução IIF com uma coluna de tabela

    Nos exemplos anteriores, podemos especificar valores diretamente na instrução IIF ou variáveis especificadas para ele. Normalmente, queremos usá-lo com os dados existentes em uma tabela SQL. Podemos usar a declaração IIF com uma coluna de tabela também.,

    no exemplo seguinte, queremos saber o nome do fornecedor a partir da tabela de gravadores de compra na Base de dados WideWorldImporters.

    Se o nome do fornecedor não existir para um determinado id do Fornecedor, devolve o valor falso especificado na declaração SQL IIF.

    Exemplo 6: o SQL instrução IIF com uma coluna de tabela e a função de agregação

    Exemplo 7: SQL instrução IIF e precedência de tipo de dados

    Podemos ter diferentes tipos de dados para os resultados., Se tivermos diferentes tipos de dados especificados nas condições de resultado, o servidor SQL dá o tipo de dados de maior precedência. No exemplo seguinte, para a condição falsa (11>19), o resultado será o argumento false_value, ou seja, 100. Ele deve ser de e inteiro tipo de dados, mas nós obtemos a saída 40.0 porque o outro argumento float (2.6) é de alta precedência do que um inteiro.,

    1
    SELECT IIF(11 > 19, 2.6, 40)

    You can check the data type precedence in the following image

    Example 8: SQL IIF with NULL values

    We should be careful in NULL values inside the SQL IIF function.,

    1
    2
    3

    SELECT
    IIF(100 > 99, NULL, NULL) AS Result;

    We cannot specify NULL in both the true and false arguments. We get the following error message.,

    Msg 8133, nível 16, estado 1, Linha 1 pelo menos uma das expressões de resultado numa especificação de caso deve ser uma expressão diferente da constante nula.

    na mensagem de erro, você pode ver que ele dá informações sobre a especificação do caso, no entanto nós usamos a função SQL IIF. Veremos isso no próximo exemplo.

    Você deve especificar pelo menos um de um argumento verdadeiro ou falso.,

    1
    2

    SELECT
    IIF(100 > 99, ‘Hello’, NULL) AS Result;

    The similarity between SQL IIF statement and CASE Statement

    In the introduction of SQL IIF Statement, we mentioned that it is a shorthand form of writing CASE statement logic or IF-ELSE logic., Sim, é verdade. Internamente o servidor SQL converte a instrução para a instrução de caso e executa. Podemos verificá-lo usando o plano de execução real de uma consulta.

    Execute a consulta do exemplo 6 com um plano de execução real.

    no plano de execução real, Veja as propriedades do escalar computado. Você pode ver que executa a instrução do caso internamente.

    Conclusion

    neste artigo, exploramos a declaração SQL IIF que é uma nova forma de escrever as condições relacionadas com a declaração de casos., Está disponível a partir do SQL 2012 em diante. Devias explorar isto para te familiarizares com isto. Se você tiver quaisquer comentários ou perguntas, sinta-se livre para deixá-los nos comentários abaixo.,

    • Autor
    • Posts Recentes
    Como uma certificação MCSA e Microsoft Certified Trainer em Gurgaon, na Índia, com 13 anos de experiência, Rajendra trabalha para uma variedade de empresas de grande porte com foco em otimização de desempenho, monitoramento, alta disponibilidade e recuperação de desastres estratégias e implementação., Ele é o autor de centenas de artigos autoritários no SQL Server, Azure, MySQL, Linux, Power BI, Performance tuning, AWS/Amazon RDS, Git, e tecnologias relacionadas que foram vistas por mais de 10m leitores até à data. ele é o criador de uma das maiores coleções online gratuitas de artigos sobre um único tópico, com sua série de 50 partes no servidor SQL sempre em grupos de disponibilidade. Com base em sua contribuição para a comunidade de servidores SQL, ele foi reconhecido com vários prêmios, incluindo o prestigiado “melhor autor do ano” continuamente em 2020 e 2021 no SQLShack.,Raj está sempre interessado em novos desafios, então se você precisar de Ajuda em qualquer assunto coberto em seus escritos, ele pode ser alcançado em rajendra.gupta16@gmail.,com
    Ver todos os posts por Rajendra Gupta

    posts mais Recentes por Rajendra Gupta (ver todas)
    • Realização de pequenas e principais atualizações de versão para o AWS RDS para SQL Server – janeiro 29, 2021
    • a Implantação da AWS RDS PostgreSQL instâncias – 27 de janeiro de 2021
    • a Migração de seu local de bases de dados SQL para a AWS RDS para SQL Server usando o AWS DMS – 25 de janeiro de 2021

    Deixe uma resposta

    O seu endereço de email não será publicado. Campos obrigatórios marcados com *