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
-->










