Considere a tabela funcionarios, que possui os campos id (inteiro), nome (texto), salario (numérico) e comissao (numérico). Sobre o tratamento de valores faltantes em SQL, analise as afirmativas a seguir. I. A instrução SELECT COUNT(salario) FROM funcionarios; conta todos os registros da tabela funcionarios. II. A expressão NULLIF(comissao, 0) retorna NULL apenas quando o valor de comissao é exatamente igual a zero. III. A cláusula WHERE nome <> NULL é adequada para retornar todos os nomes não nulos em uma tabela. Está correto o que se afirma em
- A)I, apenas.
Errada, porque COUNT(salario) não conta todos os registros da tabela, e sim apenas os que têm salario não nulo.
- B)II, apenas.
Certa, porque NULLIF(comissao, 0) retorna NULL somente quando comissao é igual a zero.
- C)I e II, apenas.
Errada, porque a afirmativa I está incorreta: para contar todas as linhas seria COUNT(*), não COUNT(salario).
- D)II e III, apenas.
Errada, porque a afirmativa III está incorreta: para valores não nulos, o correto é IS NOT NULL, e não <> NULL.
- E)I, II e III.
Errada, porque apenas a afirmativa II está correta; I e III estão incorretas.
Gabarito: B
Em SQL, valores NULL exigem cuidado porque eles não se comportam como um valor comum. Não dá para comparar NULL com "=" ou "<>" como se fosse número ou texto normal, então a lógica precisa usar IS NULL ou IS NOT NULL. Essa é a clássica armadilha de prova: o banco parece obedecer, mas ele está só seguindo a lógica ternária do SQL. Na afirmativa I, o erro é achar que COUNT(salario) conta todas as linhas. Na verdade, COUNT(coluna) conta apenas os registros em que a coluna informada não é NULL. Se a ideia fosse contar todas as linhas da tabela, o correto seria COUNT(*). Então I está errada. Na afirmativa II, NULLIF(comissao, 0) funciona exatamente assim: se comissao for igual a 0, o resultado vira NULL; se for diferente de 0, retorna o próprio valor de comissao. Portanto, a afirmação está correta. Na afirmativa III, a expressão nome <> NULL não é adequada, porque comparações com NULL não produzem verdadeiro ou falso de forma útil em SQL, mas sim resultado desconhecido. Para filtrar nomes não nulos, o correto é usar WHERE nome IS NOT NULL. Logo, só a II está certa, confirmando o gabarito B.