terça-feira, 18 de junho de 2013

IFNULL no SQL Server: ISNULL


SQL Server - Papo SQL

A ocorrência de valores nulos em banco de dados é algo normal, porém, o tratamento do retorno destes `valores` é algo muito importante. O padrão SQL ANSI  nos disponibiliza para este tratamento a função Coalesce, que é encontrada na maiores dos bancos de dados existentes, porém, normalmente cada empresa proprietária de SGBD's implementa suas próprias funções, como é o caso da Microsoft, com o uso do ISNULL, da Oracle, com o NVL e etc.

Já abordei aqui no blog como trabalhar com valores nulos no PostgreSQL:
No SQL Server, como pontuei acima temos o ISNULL, vamos conhecer sua syntax:

"ISNULL ( check_expression , replacement_value )"

Diferente do Coalesce, o ISNULL aceita somente dois parâmetros, o parâmetro a ser averiguado se é nulo e, o valor que será retornado caso o primeiro parâmetro seja realmente nulo. Outro diferencial é que, o ISNULL retorna tipo de dados diferente do parâmetro de checagem, desde que estes sejam "implicitamente conversíveis", vejamos um exemplo prático com nossa conhecida tabela produto:

Tabela: produto:
 select  id_produto, nome, isnull(qtd,0)  
 from produto ;  

ID_PRODUTO  NOME           COLUMN_2
----------         ---------          --------
1                    Produto A     10  
2                    Produto B      0  
3                    Produto C     30

Como a quantidade do produto 2 era nula, o valor foi substituído por 0 (Zero). Este tratamento é importantíssimo no uso de cálculos, pois, ao se somar registros que possuam valores nulos, o resultado será nulo, cuidado!

Mas afinal, qual usar, ISNULL ou Coalesce? Há quem diga que o ISNULL mais rápido que o Coalesce, mas há contradições e, os resultados não são expressivos, então, a escolha é sua!

Um grande abraço.

Referências: http://msdn.microsoft.com/pt-br/library/ms184325.aspx
http://weblogs.sqlteam.com/mladenp/articles/2937.aspx

2 comentários:

  1. Gostei da dica...
    Queria aproveitar o blog e pedir uma dica...
    Estou querendo fazer um curso de SQL e me indicaram o curso de SQL da Impacta...
    Alguém conhece? sabe se é bom?
    Curso SQL
    Abraço

    ResponderExcluir
    Respostas
    1. Olá amigo(a),

      Infelizmente não posso responder com exatidão pois, nunca realizei nenhum curso com a empresa, mas, observando as discussões que localizei pela web, uns relatam histórias de amor, outros de ódio.

      Mas uma coisa é unânime, sempre onde questionado sobre a qualidade dos cursos, a Caelum sempre é citada como empresa concorrente em qualidade.

      Grande abraço.

      Excluir