Ao executar a instrução SELECT SUBSTRING ('XY1234Z', 'Y*([0-...
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
A alternativa correta é a A - 123.
Para compreender a resposta correta, é importante conhecer como a função SUBSTRING funciona no PostgreSQL, especialmente quando utilizada com expressões regulares. A função SUBSTRING, no contexto de padrões de texto, é usada para extrair partes de uma string que correspondem a um padrão especificado.
No caso dessa questão, o padrão usado foi 'Y*([0-9]{1,3})'
. As expressões regulares funcionam da seguinte maneira:
Y*
- Este trecho corresponde a zero ou mais ocorrências do caractere 'Y'. No entanto, de acordo com a expressão fornecida, ele não é seguido por um ponto, que representaria qualquer caractere, então o asterisco não tem efeito prático.([0-9]{1,3})
- Esta parte da expressão representa um grupo de captura que corresponde a um mínimo de 1 e um máximo de 3 dígitos numéricos (de 0 a 9).
Ao aplicar essa expressão à string 'XY1234Z', o PostgreSQL irá procurar por até três dígitos consecutivos que sigam a letra 'Y'. Na string fornecida, os três dígitos que seguem 'Y' são '123', que é o que a função SUBSTRING irá extrair e retornar, daí a resposta correta ser 123. A parte '4Z' da string não é incluída, pois a expressão regular limita a captura a no máximo 3 dígitos.
O entendimento das expressões regulares é fundamental para resolver essa questão, e o conhecimento das funções do PostgreSQL, como a SUBSTRING com expressões regulares, é indispensável para quem lida com extração e manipulação de textos em Bancos de Dados.
É importante ressaltar que as expressões regulares são uma ferramenta muito poderosa e amplamente utilizada no mundo da programação e manipulação de dados, e o PostgreSQL oferece um bom suporte a elas, permitindo aos usuários executar operações complexas de busca e substituição de texto.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
olá Breno,
a expressão está selecionando a substring com caracteres da posição 1 a 3 da String "Y1234", sendo a contagem iniciada em 0. Ou seja, o Y encontra-se na posição 0, não sendo selecionado.
FYI, exemplo tirado de https://www.postgresql.org/docs/9.4/static/functions-matching.html#POSIX-MATCHING-RULES
entrega pra deus
ou nao
Quem não tem acesso: - -> A
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo