Questão de Banco de Dados — PostgreSQL — VUNESP 2023
Banco de Dados›PostgreSQL
Código
vu197044
Banca
VUNESP
Órgão
CIJUN
Ano
2023
Cargo
Ana ( )
O sistema gerenciador de bancos de dados PostgreSQL v 14.4 dispõe do operador substring, sendo correto que o comando
SELECT substring (‘Automóvel’ from 3)
terá como resposta:
Aomóvel
Btom
Comó
DAut
Etomóvel
Revelar gabarito e comentário▾
GabaritoE — tomóvel
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 substring no PostgreSQL
Gabarito: letra E. O comando SELECT substring('Automóvel' from 3) retorna a substring que começa na posição 3 da string original, ou seja, 'tomóvel' — a função substring com a cláusula from extrai os caracteres a partir do índice informado (contagem iniciada em 1).
A função substring é uma função de manipulação de strings amplamente utilizada em SQL, e no PostgreSQL ela pode ser usada de duas formas principais: com a sintaxe substring(string from start [for count]) ou com a sintaxe substring(string, start, count). A forma apresentada na questão, substring('Automóvel' from 3), é a primeira, onde o parâmetro from 3 indica que a extração deve começar no terceiro caractere da string. Como a contagem de posições em SQL (e na maioria das linguagens de programação) começa em 1, o terceiro caractere de 'Automóvel' é a letra 't'. A partir daí, a função retorna todos os caracteres até o final da string, resultando em 'tomóvel'.
É importante notar que a função substring é case-sensitive e preserva exatamente os caracteres da string original, incluindo acentuação. No caso, a string 'Automóvel' possui o caractere 'ó' na posição 5, e a extração a partir da posição 3 inclui esse caractere, resultando em 'tomóvel'.
A pegadinha desta questão está na contagem das posições: muitos candidatos contam a partir de 0 (como em algumas linguagens de programação, como C ou Python), o que levaria a um resultado diferente. Se a contagem fosse a partir de 0, a posição 3 corresponderia ao quarto caractere, que é 'o', resultando em 'omóvel' (alternativa A). No entanto, no PostgreSQL (e no padrão SQL), a contagem é sempre a partir de 1, então a resposta correta é 'tomóvel'.
Outra confusão comum é pensar que a função retorna apenas um número fixo de caracteres, como 3, o que levaria a 'tom' (alternativa B) ou 'omó' (alternativa C). Mas, sem a cláusula for, a função retorna todos os caracteres a partir da posição inicial até o fim da string.
1Contagem começa em 1
2Posição 3 = 't'
3Sem 'for', vai até o fim
4Resultado: 'tomóvel'
LEVEL · soulevel.com.br
Alternativa A — ❌ Incorreta
'omóvel' seria o resultado se a contagem começasse em 0 (posição 3 = quarto caractere 'o'), mas no PostgreSQL a contagem é a partir de 1, então a posição 3 é o caractere 't'. A alternativa confunde a base de indexação.
Alternativa B — ❌ Incorreta
'tom' seria o resultado se a função retornasse apenas 3 caracteres a partir da posição 3, mas sem a cláusula for, a função retorna até o final da string. A alternativa ignora o comportamento padrão da função.
Alternativa C — ❌ Incorreta
'omó' também seria resultado de uma contagem a partir de 0 e com limitação de 3 caracteres, combinando os dois erros das alternativas A e B. Não corresponde ao comportamento real da função.
Alternativa D — ❌ Incorreta
'Aut' seria o resultado se a função retornasse os 3 primeiros caracteres da string, mas a função substring com from 3 não retorna os primeiros caracteres, e sim a partir da posição 3. A alternativa confunde a direção da extração.
Alternativa E — ✅ Correta ⟵ GABARITO
A função substring('Automóvel' from 3) extrai a substring a partir do terceiro caractere (posição 3, contagem a partir de 1) até o final da string. A string 'Automóvel' tem os caracteres: A(1), u(2), t(3), o(4), m(5), ó(6), v(7), e(8), l(9). A partir da posição 3, temos 'tomóvel', que é exatamente o resultado retornado.
PEGA ESSA DICA!
Para resolver questões de substring, lembre-se: a contagem de posições no SQL começa em 1, e sem a cláusula for, a função retorna até o final da string. Se a alternativa trouxer um resultado que parece "cortado" no meio, verifique se não há um for implícito — ele não existe aqui.