Em SQL, null é null, vazio é vazio

Em SQL, null é null, vazio é vazio
Guilherme Silveira
Guilherme Silveira

Compartilhe

Considerando uma tabela de dados Alunos, com campo nome e campo empresa, somo trazer quem não preencheu o campo empresa? Uma das soluções é procurar pela string vazia:


select nome, empresa from Alunos a where empresa = '';

> Paulo, 
> ... 
> Carlos, 
> Total: 1000 alunos

Mas eu sei que tenho mais de 1000 alunos que ainda não preencheram este campo, onde estão eles?

Banner de divulgação da Imersão IA da Alura em colaboração com o Google. Mergulhe em Inteligência artificial com a Alura e o Google. Serão cinco aulas gratuitas para você aprender a usar IA na prática e desenvolver habilidades essenciais para o mercado de trabalho. Inscreva-se gratuitamente agora!

select nome, empresa from Alunos a where empresa is null;

> Guilherme, NULL 
> ... 
> Ana, NULL 
> Total: 2000 alunos

O que acontece que alguns alunos estão em branco, outros estão nulos?

Muito cuidado quando criar suas tabelas. Em geral fazemos como com qualquer linguagem de programação: definimos uma variável e não damos valor padrão a ela. Isso acontece direto em orientação a objetos, definimos variáveis membro sem valor padrão. Resultado?

Algumas pessoas não editaram o perfil, e continuam com o valor padrão do banco(NULL). Outras editaram mas não preencheram e estão agora com valor em branco. E agora toda query que você vai fazer na tua vida você tem que verificar:


select * from Alunos a where empresa = '' 
  or empresa is null and cadastro > '20150101';

Pior ainda, além do fato que já vimos que o OR é um horror na Terra, temos que lembrar de colocar ele entre parenteses pra não dar um resultado errado:


select * from Alunos a 
  where (empresa = '' or empresa is null) 
  and cadastro > '20150101';

Usa o valor padrão. Usa o default e pare de se preocupar:


alter table Alunos modify column empresa 
  varchar(200) default '' not null;

Agora sim você tem certeza que todas as queries só precisam verificar por valores vazios. A chance de errar? Bem menor!

Guilherme Silveira
Guilherme Silveira

Co-fundador da Alura, da Caelum e do GUJ. Com 18 anos de ensino nas áreas de programação e dados, criou mais de 100 cursos. Possui formação em engenharia de software, viés matemático e criativo, além de ser medalhista de ouro em competições nacionais de computação, tendo representado o Brasil nos mundiais. Participante de comunidades open source e de educação em tecnologia, tendo escrito 7 livros. Faz mágica e fala coreano no tempo livre.

Veja outros artigos sobre Data Science