Pular para o conteúdo principal

Questão de Banco de Dados — SQL — FCC 2018

Banco de DadosSQL
Código
fc048989
Banca
FCC
Órgão
SEFAZ-SC
Ano
2018
Cargo
Auditor-Fiscal da Receita Estadual - Auditoria e Fiscalização (Prova 3)
Para calcular o número de produtos com nomes que terminam com a letra B, o Auditor testou os comandos abaixo.I. SELECT COUNT(nomePro) FROM Produto WHERE nomePro BEGIN '%B';II . SELECT COUNT(*) FROM PRODUTO WHERE SUBSTR(nomePro, -1)='B';III . SELECT COUNT(*) FROM Produto WHERE nomePro LIKE '%B';IV. SELECT COUNT(nomePro) FROM Produto WHERE SUBSTR(nomePro, 0)='B';Mostrará o resultado desejado o que consta APENAS em
  1. AIII .
  2. BI e IV.
  3. CIII e IV.
  4. DI e II .
  5. EII e III .
Revelar gabarito e comentário

GabaritoE — II e III .

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”.

SQL: Consultas com filtro de padrão e funções de string

Gabarito: letra E. Apenas os comandos II e III retornam corretamente o número de produtos cujo nome termina com a letra B, pois: II utiliza SUBSTR com índice -1 para extrair o último caractere; III utiliza o operador LIKE com coringa % para indicar qualquer sequência antes de 'B'.

Vamos analisar cada comando:

Comando I — ❌ Incorreto

O operador BEGIN não é uma palavra-chave válida em SQL para comparação de padrões. O correto seria usar LIKE ou funções de string. Portanto, está errado.

Comando II — ✅ Correto

SUBSTR(nomePro, -1) retorna o último caractere da string (em bancos que suportam índice negativo). A condição ='B' verifica se é igual a 'B'. Funciona para o objetivo.

Comando III — ✅ Correto

O operador LIKE com padrão '%B' casa qualquer string que termine com 'B'. É a forma padrão e correta.

Comando IV — ❌ Incorreto

SUBSTR(nomePro, 0) retorna a string a partir da posição 1 (pois índice 0 é tratado como 1 em muitos bancos), ou pode gerar erro. Não captura o último caractere. A condição ='B' só seria verdade se o nome inteiro fosse 'B', o que não é o desejado.

Conclusão: Apenas II e III estão corretos → alternativa E.

Comando

Descrição

Correto?

Motivo

I

SELECT COUNT(nomePro) FROM Produto WHERE nomePro BEGIN '%B'

BEGIN não é operador SQL válido para padrão; deveria ser LIKE

II

SELECT COUNT(*) FROM PRODUTO WHERE SUBSTR(nomePro, -1)='B'

SUBSTR com índice -1 extrai o último caractere; comparação correta

III

SELECT COUNT(*) FROM Produto WHERE nomePro LIKE '%B'

LIKE '%B' casa qualquer string que termine com 'B'

IV

SELECT COUNT(nomePro) FROM Produto WHERE SUBSTR(nomePro, 0)='B'

SUBSTR com índice 0 retorna a string desde o início (posição 1), não o último caractere; só acertaria se o nome fosse exatamente 'B'

1I. BEGIN '%B'
Operador inválido
2II. SUBSTR(..., -1)='B'
Último caractere
3III. LIKE '%B'
Padrão correto
4IV. SUBSTR(..., 0)='B'
Índice 0 = posição 1
SQL: nomes que terminam com 'B'
LEVELsoulevel.com.br
SQL: nomes que terminam com 'B': I. BEGIN '%B' (Operador inválido); II. SUBSTR(..., -1)='B' (Último caractere); III. LIKE '%B' (Padrão correto); IV. SUBSTR(..., 0)='B' (Índice 0 = posição 1)

Gabarito: letra E.

Link permanente: /questoes/fc048989