Esse artigo faz parte da revista Clube Delphi Edição 80. Clique aqui para ler todos os artigos desta edição

Atenção: por essa edição ser muito antiga não há arquivo PDF para download.

Os artigos disponíveis somente através do formato HTML.

 

Firebird

Saiba como trabalhar corretamente com o NULL no Firebird

 

Repetidas vezes, perguntas de suporte surgem nas listas de e-mail do Firebird relatando que “coisas estranhas” acontecem com NULLs. O conceito parece difícil de captar, em parte, possivelmente, por causa do nome, que sugere aparentemente um “nada”, não causará nenhum problema, caso o acrescentemos a um número ou o adicionarmos ao final de uma string.

Na verdade, a execução de tais operações fará com que o resultado final seja um NULL. Este artigo mostrará o comportamento do NULL no Firebird, aponta as armadilhas mais comuns e mostra como lidar com segurança, com expressões que contêm NULL ou podem resultar em um NULL.

 

Observação: Algumas sentenças e exemplos neste artigo, foram extraídos do Firebird Quick Start Guide, publicado primeiramente por IBPhoenix e que atualmente faz parte do projeto Firebird.

 

O que é NULL?                

No SQL, NULL não é um valor, é, porém, o estado que indica que o valor de um item é desconhecido ou inexistente. Não é o valor zero, o espaço ou “uma string vazia”, e não se comporta como nenhum desses valores.

Poucas coisas no SQL levam a maior confusão do que o NULL, no entanto, seu funcionamento não deverá ser difícil de entender enquanto adotamos essa simples definição: NULL significa desconhecido. Permita-me repetir:

 

NULL significa DESCONHECIDO

 

Tendo essa frase em mente no restante do artigo, a maior parte dos resultados aparentemente ilógicos obtidos com o uso do NULL, irão se explicar praticamente por si mesmo.

 

NULL em expressões

Assim como muitos, já descobrimos que o NULL é contagioso: seja utilizado em um numérico, em string ou em expressões data/hora, o resultado sempre será NULL. Utilizado em uma expressão booleana, o resultado depende do tipo da operação e dos outros valores implicados.

Note que em versões Firebird anteriores à 2.0 é geralmente ilegal utilizar constantes NULL diretamente em operações ou comparações. Onde quer que o NULL apareça nas expressões a seguir, leia-se como “um campo, uma variável ou outra expressão que resulta em NULL”.

 

ClubeDelphi PLUS!

Acesse agora mesmo o Portal do Assinante ClubeDelphi e assista a uma vídeo-aula de Paulo Quicoli que mostra como instalar o Firebird 2.0 juntamente com a versão antigo (Firebird 1.5).  www.devmedia.com.br/articles/viewcomp.asp?comp=3840

 

Expressões que retornam NULL

As expressões da Listagem 1 sempre retornam NULL:

 

Listagem 1. Expressões que sempre retornam NULL

1 + 2 + 3 + NULL

'Home ' || 'sweet ' || NULL

MyField = NULL

MyField <> NULL

NULL = NULL

not (NULL)

 

Se houver alguma dificuldade para entender o porquê, basta lembrar que NULL significa “desconhecido”. Vejamos também a Tabela 1, onde foram fornecidas explicações caso a caso.

 

Se A e B são NULL

Será

Por que

...
Quer ler esse conteúdo completo? Tenha acesso completo