SóProvas


ID
2743372
Banca
FGV
Órgão
MPE-AL
Ano
2018
Provas
Disciplina
Banco de Dados
Assuntos

Considere o comando SQL a seguir.

select *
from teste
where nota <> null

Sabendo-se que a tabela teste tem 100 registros, dos quais 15 estão com a coluna nota ainda não preenchida (null), o comando acima, executado no MS SQL Server ou no Oracle, retorna

Alternativas
Comentários
  • LETRA B

    A construção do jeito que está não funciona, apesar de válida. O correto seria:
    IS NULL - Para comparar se os valores são nulos;
    IS NOT NULL - Para comparar se os valores NÃO são nulos;

  • http://sqlfiddle.com/#!9/7cc28d/4

  • Gabarito : B


    Segundo o site da Oracle ( https://docs.oracle.com/cd/B19306_01/server.102/b14200/sql_elements005.htm )  neste caso, comparar null como se fosse um valor literal, tem como resultado "UNKNOWN", logo, por isso retorna "zero" linhas.

     

    Veja :

    "... To test for nulls, use only the comparison conditions IS NULL and IS NOT NULL. If you use any other condition with nulls and the result depends on the value of the null, then the result is UNKNOWN. "

  • Na utilização de comparações lógicas de valores com o NULL, não há erro produzido pela consulta, ela roda normalmente. O que acontece na consulta em tela é que nenhum registro é retornado, pois não podemos dizer que nada é igual ou diferente de nulo, então nenhum valor de nota vai satisfazer à comparação. Para fazer comparações com o NULL, se usa operadores especiais, como IS NULL e IS NOT NULL.

  • Operadores relacionais não podem ser utilizados para comparar valores nulos, portanto essa consulta não retornará nenhuma linha.

  • QUALQUER comparação com NULL que não seja com o operador IS NULL resultará em NULL, e consequentemente fará com que nenhuma linha seja adicionada ao conjunto-resultado.