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>
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
Ver todos os posts por Rajendra Gupta
- 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