SóProvas


ID
1055884
Banca
CESPE / CEBRASPE
Órgão
STF
Ano
2013
Provas
Disciplina
Banco de Dados
Assuntos

Julgue os seguintes itens, referentes a frameworks para camada de persistência e SQL.

Considerando que a consulta abaixo seja realizada em um SGBD Oracle, é correto afirmar que o valor 0 será mostrado na coluna salario quando um valor NULL for retornado.
SELECT nome, NVL(salario, 0), cidade
FROM empregado
WHERE salario IS NULL
ORDER BY nome;

Alternativas
Comentários
  • Respondi a questão considerando o item errado!!!
    Justificativa: O Comando precisaria usar uma renomeação "SALARIO" após o uso da função da seguinte forma:
    SELECT nome, NVL(salario, 0) SALARIO, cidade
    FROM empregado
    WHERE salario IS NULL
    ORDER BY nome;


    O resultado da consulta original da questão não terá a coluna salario, pois a consulta retornará um nome genérico como resultado da função NVL. Exemplo de retorno genérico: column1.
    Na minha opinião, faltou um recurso.
    No exemplo contido na documentação da Oracle há a renomeação, veja:
    http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions105.htm

  • Clark, em se tratando de Banca CESPE vamos ao que se pede exatamente na questão,ou seja,  "é correto afirmar que o valor 0 será mostrado na coluna salario quando um valor NULL for retornado", o renomeação é algo opcional...

  • Errei por pensar exatamente igual ao colega clarck.

    Se considerarmos apenas o resultado da consulta, fato é que não vai ter uma coluna "salario".

  • Também achei a questão difícil por pensar que poderia haver uma pegadinha aí com essa questão de não ter alias.

  • A função NVL( ) encontra-se disponível no sistema Oracle, mas não nos sistemas MySQL ou SQL Server. Esta função é utilizada para substituir o valor NULL por outro valor. É semelhante à função IFNULL no sistema MySQL e à função ISNULL no SQL Server.

    SELECT SUM ( NVL (Sales,100)) FROM Sales_Data;

     

    Certo

     

    https://www.1keydata.com/pt/sql/sql-nvl.php

  • CORTA PRA CÁ!!!

    Vamos fazer um teste!!! E no Oracle online ainda pra "mimizento/gnutella/tik tok/millenials/X/Y/Z/e_os_escambau" nenhum ter desculpa!!! (ah, pq não sei instalar o Oracle, não sei onde baixar e talz!)

    1) Criar uma tabela com os dados da questão!!!

    CREATE TABLE empregado (

    nome VARCHAR (50),

    salario NUMBER (10),

    cidade VARCHAR (50)

    );

    2) Popular essa tabela com os dados e com dados NULL!!!

    INSERT INTO empregado (nome, salario, cidade)

    VALUES ('ze', '1000', 'SP');

    INSERT INTO empregado (nome, salario, cidade)

    VALUES ('joao', ' ', 'rio');

    INSERT INTO empregado (nome, cidade)

    VALUES ('maria', 'BH');

    3) Rodar o comando da questão!!!

    SELECT nome, NVL(salario, 0), cidade

    FROM empregado

    WHERE salario IS NULL

    ORDER BY nome;

    NOME | NVL(SALARIO,0) | CIDADE

    joao | 0 | rio

    maria | 0 | BH

    Sim, é correto afirmar que o valor 0 será mostrado na coluna salario quando um valor NULL for retornado!!!

    OBS: Apenas sabendo o conceito de NVL dá pra resolver, mas resolvi fazer isso pq acho q li ai nos comentario alguem dizendo q a questao tava errada!!! Ai resolvi provar!!!

    ele não cita expressamente "salario" pq não precisa. A coluna é salario e pronto!!!