Questão nº 41
Questão de Tecnologia da Informação · FGV STN 2024 (nº 41)
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) (alternativa correta)
- 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
Resposta comentada
Gabarito Alternativa A
Em SQL, a lógica de três estados (ou três valores) significa que uma condição pode ser TRUE (verdadeira), FALSE (falsa) ou UNKNOWN (desconhecida), geralmente por causa do valor NULL (que representa um dado ausente ou desconhecido). A cláusula WHERE só retorna as linhas para as quais a condição avalia como TRUE.
A) Correta: A condição (Z is null or Z = null) é avaliada.
Z is null: ComoZénull, esta parte avalia como TRUE.Z = null: Compararnullcomnull(ou qualquer outro valor) sempre resulta em UNKNOWN.TRUE or UNKNOWN: Na lógica de três estados,TRUEou qualquer coisa (incluindoUNKNOWN) resulta em TRUE.- Como a condição final é TRUE, a linha é retornada.
B) Incorreta: A condição not Z is null or Y = 15 é avaliada.
Z is null: Avalia como TRUE.not Z is null:not TRUEavalia como FALSE.Y = 15:20 = 15avalia como FALSE.FALSE or FALSE: Avalia como FALSE.- Como a condição final é FALSE, a linha não é retornada.
C) Incorreta: A condição not Z is null or Z = null é avaliada.
Z is null: Avalia como TRUE.not Z is null:not TRUEavalia como FALSE.Z = null: Avalia como UNKNOWN.FALSE or UNKNOWN: Na lógica de três estados,FALSEouUNKNOWNresulta em UNKNOWN.- Armadilha da banca: Esta alternativa é muito parecida com a correta (A), mas a presença do
NOTna primeira parte (not Z is null) muda o resultado. EnquantoZ is nulléTRUE,not Z is nulléFALSE. A armadilha é assumir queZ = nullde alguma forma "resolveria" a condição, mas ele sempre resulta emUNKNOWN, eFALSE OR UNKNOWNainda éUNKNOWN, nãoTRUE. - Como a condição final é UNKNOWN, a linha não é retornada.
D) Incorreta: A condição Z < X or Z > X é avaliada.
Z < X:null < 10avalia como UNKNOWN.Z > X:null > 10avalia como UNKNOWN.UNKNOWN or UNKNOWN: Avalia como UNKNOWN.- Como a condição final é UNKNOWN, a linha não é retornada.
E) Incorreta: A condição Z = null or Y <> null é avaliada.
Z = null: Avalia como UNKNOWN.Y <> null:20 <> nullavalia como UNKNOWN.UNKNOWN or UNKNOWN: Avalia como UNKNOWN.- Como a condição final é UNKNOWN, a linha não é retornada.
Fonte: FGV STN 2024 Auditor Federal de Finanças e Controle - Tecnologia da Informação (Operação e Infraestrutura) (Caderno Tipo 1). Reproduzida para fins de estudo.