String Vazia contra Nulo no Oracle


915 visualizações

Tem coisas que não aprendemos na faculdade. Eu mesmo, cursando um semestre inteiro de banco de dados com a ferramenta Oracle não descobri algo tão básico.

O Oracle trata a string vazia como nulo!

Pois é, também fiquei chocado. Mas caso você não tenha entendido a frase acima, vou exemplificar logo abaixo.

Nota: Um pouco de teoria antes. No mundo da programação, nulo é diferente de nulo. Ou seja, se você não conhece um valor, não tem como você comparar ele com nada. Logo, tudo é diferente de nulo, inclusive ele mesmo.


4fb700708a09a1_

O mesmo valeria para o select abaixo.

4fb700708a09a2_

Outros casos interessantes é que se você utilizar funções como Length(campo_qualquer) e Trim(campo_qualquer) para campos varchar que estejam em branco, o retorno será sempre nulo e nunca 0 ou vazio.

Entendeu? Simples né?

Bom, mas e daí que a string vazia é diferente de nulo?

“Daí” que se você comparar algo como “se campo = ”, então, faça isso…”, com certeza vai quebrar a cara pois a comparação sempre será falsa. Lembra que a string vazia é considerada nulo no Oracle e que nulo é diferente de nulo? (Confuso né? É só forçar um pouco que você se acostuma :)

Quer comparar se não há valor em determinado campo no Oracle? Eu aconselho o seguinte:


4fb700708a09a3_

Pronto, dessa forma você consegue sempre verificar de forma simples se não há conteúdo em determinado campo. Se o campo for do tipo varchar, então o Trim se torna desnecessário.

Fim, ufa :)

Sobre Mauricio Naozuka

Mauricio Naozuka já escreveu 2 artigos no portal.

Analista de sistemas e programador Delphi. Viciado em lógica de programação independente da linguagem. Atualmente, engatinhando a carreira como desenvolvedor .NET. Fã assíduo de jogos de RPG e geral. Encontrei a mulher da minha vida, tenho uma coleção de mangás e um gato-aranha chamado Hermann. :)

-->

Interaja

Qual a soma entre:
4 + 1