Com relação à tabela descrita anteriormente, analise o coman...
Atenção: para resolver a questão a seguir, considere a estrutura e a instância da tabela IMB exibida abaixo.
A B
2 NULL
3 3
4 3
4 2
NULL 1
5 0
Com relação à tabela descrita anteriormente, analise o comando SQL a seguir.
select *
from IMB
where A is null and B = 2 or B = 3
Assinale o resultado exibido quando esse comando é executado.
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Alternativa correta: A
A solução desta questão envolve o entendimento de como a cláusula WHERE funciona no SQL e a maneira como os operadores lógicos AND e OR são avaliados.
Na query fornecida, estamos pesquisando na tabela IMB por registros onde A é nulo (NULL) e o valor de B é igual a 2, ou onde B é igual a 3. A ausência de parênteses na condição da cláusula WHERE implica que a lógica segue a precedência padrão de operadores: o operador AND tem precedência sobre o operador OR, ou seja, o filtro A IS NULL AND B = 2 será avaliado em conjunto, e então o resultado será combinado com o filtro B = 3 utilizando o operador OR.
A condição A IS NULL AND B = 2 não é verdadeira para nenhum registro na tabela IMB. Entretanto, a condição B = 3 é verdadeira para dois registros:
- 3 | 3
- 4 | 3
Portanto, esses dois registros satisfazem a condição da cláusula WHERE e são retornados pelo comando SQL:
3 | 3
4 | 3
Esta é a razão pela qual a Alternativa A está correta e as demais estão incorretas.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
"A is null and B = 2" -> 0 registro
OR
"B = 3" -> 2 registros (GAB A)
Se alguém puder comentar como eu separo
where A is null and B = 2 or B = 3
Fiquei na duvida se era
where A is null AND (B = 2 or B = 3)
ou
(where A is null AND B = 2) or B = 3
GAB. A
Pegadinha da boa nesta questão
Vou quebrar o comando para entender melhor.
select * from IMB
where A is null and B = 2 // essa é a primeira cláusula a ser analisada A nulo E (AND) B = 2 (nenhuma opção)
or B =3; // essa é a segunda parte B = 3, neste caso duas opções.
Cuidado, pois se o comando fosse
where A is null and (B = 2 OR B = 3) a resposta seria vazio (nenhuma condição satisfeita)
- Arithmetic operators
- Concatenation operator
- Comparison conditions
- IS [NOT] NULL, LIKE, [NOT] IN
- [NOT] BETWEEN
- Not equal to
- NOT logical condition
- AND logical condition
- OR logical condition
Fonte: https://stackoverflow.com/questions/1241142/sql-logic-operator-precedence-and-and-or
Me pegou kkkk. Na prova pra valer eu te pego danada!
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo