Pular para o conteúdo principal

Questão de Banco de Dados — SQL — FUNDATEC 2025

Banco de DadosSQL
Código
qg472040
Banca
FUNDATEC
Órgão
GHC-RS
Ano
2025
Nível
Médio
Cargo
Programador
Para responder à questão, considere o modelo Entidade-Relacionamento (ER) apresentado pela Figura 1 abaixo, bem como o dicionário de dados apresentado logo em seguida:


Imagem da questão
Considerando que a tabela funcionario permite incluir registros com valores nulos (NULL) no campo fun_nome, qual alternativa apresenta a expressão SQL correta para substituir apenas os valores nulos, do campo fun_nome, por “Nome não informado”?Imagem associada para resolução da questão
  1. Aselect fun_id, coalesce(fun_nome, 'Nome não informado') nome from funcionario
  2. Bselect fun_id, coalece(fun_nome, 'Nome não informado') nome from funcionario
  3. Cselect fun_id, coalesce('Nome não informado', fun_nome) nome from funcionario
  4. Dselect fun_id, coalese('Nome não informado', fun_nome) nome from funcionario
  5. Eselect fun_id, coalece('Nome não informado', fun_nome) nome from funcionario
Revelar gabarito e comentário

GabaritoA — select fun_id, coalesce(fun_nome, 'Nome não informado') nome from funcionario

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Função COALESCE no SQL

Gabarito: letra A. A função COALESCE retorna o primeiro valor não nulo da lista de argumentos; portanto, para substituir apenas os valores nulos de fun_nome por 'Nome não informado', a ordem correta é COALESCE(fun_nome, 'Nome não informado') — se fun_nome for nulo, retorna o texto; caso contrário, retorna o próprio nome. As demais alternativas apresentam erros de grafia na função ou invertem a ordem dos argumentos.

A função COALESCE é uma função padrão do SQL (definida no padrão SQL:2003 e suportada pela maioria dos SGBDs relacionais, como PostgreSQL, MySQL, Oracle, SQL Server) que recebe uma lista de expressões e retorna a primeira que não seja NULL. É uma forma elegante de tratar valores nulos em consultas, evitando o uso de CASE WHEN ... THEN ... ELSE ... END ou de IFNULL/NVL (que são específicos de cada banco).

A sintaxe é: COALESCE(expr1, expr2, ..., exprN). O SQL avalia cada expressão na ordem em que aparecem e retorna a primeira que não for nula. Se todas forem nulas, retorna NULL. No caso da questão, queremos que, quando fun_nome for nulo, apareça o texto 'Nome não informado'; quando não for nulo, apareça o próprio valor do campo. Por isso, a ordem correta é colocar fun_nome primeiro e o texto substituto em segundo: COALESCE(fun_nome, 'Nome não informado').

Se invertermos a ordem — COALESCE('Nome não informado', fun_nome) — o resultado seria sempre o texto 'Nome não informado', pois ele nunca é nulo, e o valor real do campo nunca apareceria. Isso tornaria a consulta inútil para o propósito de exibir o nome real quando ele existe.

A banca explora dois erros clássicos: (1) a grafia incorreta da função (coalece, coalese em vez de coalesce) e (2) a inversão da ordem dos argumentos. O candidato que conhece a sintaxe exata e o comportamento da função elimina as alternativas com erros de digitação e identifica a ordem correta.

NÃO CAIA NESSA!

A banca troca a grafia da função (coalece, coalese) e inverte a ordem dos argumentos. O candidato que decora a sintaxe sem entender o comportamento erra ao escolher a alternativa com a ordem invertida, que retornaria sempre o texto fixo, ignorando o valor real do campo.

COALESCE
  • 1Sintaxe
    • COALESCE(expr1, expr2, ..., exprN)
    • Retorna 1º valor não nulo
  • 2Ordem dos argumentos
    • COALESCE(fun_nome, 'Nome não informado')
      • fun_nome nulo → texto substituto
      • fun_nome preenchido → valor real
    • COALESCE('Nome não informado', fun_nome)
      • Sempre retorna o texto fixo
      • Ignora o valor real do campo
  • 3Erros comuns
    • Grafia incorreta (coalece, coalese)
    • Ordem invertida dos argumentos
LEVEL · soulevel.com.br

Alternativa A — ✅ Correta ⟵ GABARITO

A alternativa apresenta a sintaxe correta da função COALESCE com a ordem adequada: COALESCE(fun_nome, 'Nome não informado'). Isso garante que, para cada registro, se fun_nome for nulo, o resultado será o texto 'Nome não informado'; caso contrário, será o valor do próprio campo. O alias nome é opcional e apenas renomeia a coluna no resultado.

Alternativa B — ❌ Incorreta

A alternativa apresenta erro de grafia: coalece em vez de coalesce. A função correta é COALESCE, com 's' antes do 'c' final. Esse erro de digitação torna o comando inválido em qualquer SGBD.

Alternativa C — ❌ Incorreta

A alternativa apresenta a ordem invertida dos argumentos: COALESCE('Nome não informado', fun_nome). Como o primeiro argumento é uma string literal (nunca nula), a função sempre retornará 'Nome não informado', ignorando o valor real de fun_nome. Isso não atende ao requisito de substituir apenas os valores nulos.

Alternativa D — ❌ Incorreta

A alternativa apresenta erro de grafia: coalese em vez de coalesce, além de inverter a ordem dos argumentos. A função correta é COALESCE, e a ordem deveria ser COALESCE(fun_nome, 'Nome não informado').

Alternativa E — ❌ Incorreta

A alternativa apresenta erro de grafia: coalece em vez de coalesce, além de inverter a ordem dos argumentos. A função correta é COALESCE, e a ordem deveria ser COALESCE(fun_nome, 'Nome não informado').

Gabarito: letra A

Link permanente: /questoes/qg472040