Questão FC369478
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
Linguagem SQL
FGV · 2024
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.
- select 1 from T where (Z is null or Z = null)
- select 1 from T where not Z is null or Y = 15
- select 1 from T where not Z is null or Z = null
- select 1 from T where Z < X or Z > X
- select 1 from T where Z = null or Y <> null
Mostrar resposta e comentário
Gabarito
A
Comentário do professor
A expressão dada select 1 from T where (Z is null or Z = null) retorna 1 porque, na presença de NULL, o SQL adota a lógica ternária (true, false, unknown).
No caso, a coluna Z contém NULL, então a subexpressão Z is null é avaliada como true, enquanto Z = null resulta em unknown (comparações com NULL não produzem true nem false).
O operador OR obedece à tabela de verdade ternária, onde \( \text{true} \lor \text{unknown} = \text{true} \). Assim o conjunto entre parênteses produz true, o WHERE aceita a linha e o SELECT retorna 1.
Observação prática: para testar nulos, prefira sempre IS NULL em vez de “= NULL”.
Conteúdo do catálogo FC Concursos · Atualizado em