FC ConcursosFC Concursos

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.

  1. select 1 from T where (Z is null or Z = null)
  2. select 1 from T where not Z is null or Y = 15
  3. select 1 from T where not Z is null or Z = null
  4. select 1 from T where Z < X or Z > X
  5. 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

Continue aprendendo