Auditor Federal de Finanças e Controle - Área de Tecnologia da Informação (Operação e Infraestrutura) - manhã
No contexto da lógica de três estados, normalmente utilizada em expressões lógicas que envolvem valores nulos, considere uma tabela relacional T com colunas X, Y, Z, com apenas uma linha, cujos valores das colunas são, respectivamente, 10, 20 e null.Assinale o comando que retornaria o valor 1 no resultado.
Aselect 1 from T where (Z is null or Z = null)
Bselect 1 from T where not Z is null or Y = 15
Cselect 1 from T where not Z is null or Z = null
Dselect 1 from T where Z < X or Z > X
Eselect 1 from T where Z = null or Y <> null
Revelar gabarito e comentário▾
GabaritoA — select 1 from T where (Z is null or Z = null)
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Lógica de três estados (NULL) em SQL
Gabarito: letra A. A única alternativa que retorna 1 é aquela cuja condição WHERE avalia para TRUE, considerando que comparações com NULL geram UNKNOWN. A expressão Z is null é TRUE (já que Z é NULL), e Z = null é UNKNOWN; a disjunção TRUE OR UNKNOWN resulta em TRUE, selecionando a única linha da tabela.
A lógica de três estados (TRUE, FALSE, UNKNOWN) é fundamental em SQL para lidar com valores nulos. Comparações diretas com = ou <> contra NULL nunca retornam TRUE, apenas UNKNOWN. Já os operadores IS NULL e IS NOT NULL retornam TRUE ou FALSE corretamente.
Alternativa A — ✅ Correta ⟵ GABARITO
A condição (Z is null or Z = null) é avaliada como TRUE OR UNKNOWN = TRUE. Como Z is null é verdadeiro (Z é NULL), toda a expressão é TRUE, e a linha é retornada.
Alternativa B — ❌ Incorreta
A expressão not Z is null or Y = 15 equivale a FALSE OR FALSE = FALSE. NOT (Z is null) é FALSE (porque Z é nulo), e Y = 15 é FALSE (Y=20). Nenhuma linha retornada.
Alternativa C — ❌ Incorreta
not Z is null or Z = null → FALSE OR UNKNOWN = UNKNOWN. A condição não é TRUE, portanto a linha não é selecionada.
Alternativa D — ❌ Incorreta
Ambas as comparações com NULL geram UNKNOWN: Z < X (NULL < 10) = UNKNOWN, Z > X (NULL > 10) = UNKNOWN. UNKNOWN OR UNKNOWN = UNKNOWN. Nenhuma linha.
Alternativa E — ❌ Incorreta
Z = null é UNKNOWN, Y <> null também é UNKNOWN. UNKNOWN OR UNKNOWN = UNKNOWN. Nenhuma linha.
NÃO CAIA NESSA!
A banca testa se você sabe que Z = null nunca é verdadeiro, mesmo quando Z é NULL. Candidatos desatentos podem pensar que = null funciona como IS NULL, mas o correto é usar IS NULL. Além disso, OR com UNKNOWN pode surpreender: a tabela-verdade mostra que TRUE OR UNKNOWN = TRUE, FALSE OR UNKNOWN = UNKNOWN. Memorize esses casos para não errar.