NULL significa nulo, em um banco de dados um valor nulo é uma coluna que não possui nenhum valor atribuído. O null é diferente de espaços em branco e também é diferente de 0, o banco de dados Oracle considera um valor null um valor que tem tamanho igual a 0. Não é possível atribuir valor null para uma coluna definida como NOT NULL ou como PRIMARY KEY.
Para filtramos colunas que tenham valores null devemos utilizar o comparador IS ou NOT IS ao invés de = ou <>.
Podemos notar que não retorna erro de sintaxe ao utilizar o comparador =, contudo, o resultado não é o esperado.
Ao utilizar comparadores com valor null em uma consulta, podemos ter 3 resultados: VERDADEIRO (TRUE), FALSO (FALSE) ou DESCONHECIDO (UNKNOWN).
Quando utilizamos os operadores de igual e diferente ( =, <>, !=, ^=) com NULL a sintaxe não retornará erro, mas o resultado da comparação será desconhecido e a consulta não retornará resultados, conforme vimos na imagem anterior.
Resultados VERDADEIROS (TRUE) são quando a comparação verifica se o conteúdo da coluna é nulo e o conteúdo de fato é nulo ou quando verifica se o conteúdo não é nulo e esse conteúdo não é nulo.
Já os resultados FALSOS (FALSE) de uma comparação com null é quando a comparação busca uma coluna com valor nulo e ela tem qualquer valor, ou ainda quando a comparação busca uma coluna que não tenha valor nulo e ela tem o valor null. Levando em conta o exemplo das imagens acima, utilizadas para exemplificar os resultados verdadeiros, seria o inverso.
Lembrando ainda que valores nulos não retornam erro de sintaxe quando utilizados em operações aritméticas, embora toda operação envolvendo um valor nulo irá retornar um valor nulo. Esse deve ser um ponto de atenção na lógica ao desenvolver uma consulta SQL.
Nos casos como o citado acima, podemos utilizar funções específicas para o tratamento de valores nulos como as funções NLV e NVL2.
Fonte:
Nenhum comentário:
Postar um comentário