SóProvas


ID
2518123
Banca
FCC
Órgão
TRT - 24ª REGIÃO (MS)
Ano
2017
Provas
Disciplina
Banco de Dados
Assuntos

Ao executar a instrução SELECT SUBSTRING ('XY1234Z', 'Y*([0-9]{1,3})'); no PostgreSQL versão 9.4 será exibido o valor

Alternativas
Comentários
  • Por quê o Y não aparece?
  • 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

  • tbm queria saber pq não aparece o y

  • pelo meu entendimento, a regex Y*([0-9]{1,3}) significa 0 ou mais Y seguidos por 1 a 3 dígitos de 0 a 9

    Exemplos:

    1

    12

    123

    Y1

    Y12

    Y123

    A regex tenta dar match na maior correspondência

    Dentro das alternativas fiquei entre, Y12 e 123, fui na 123 por causa do parêntesis dar prioridade

    Não vou ler o link que colocaram sobre POSIX matching, pelo seguinte fator:

    Estou resumindo a documentação do postgresql levando em conta as questões, e até pulei esse tópico.. É muito grande, e não tem só PostgreSQL no seu edital...Fica a dica!

  • Cuidado, pessoal. Vários comentários errados aqui. Vamos lá... 'Y*([0-9]{1,3})'

    "Y" = character Y

    "*" = seguido de qualquer coisa

    "[0-9]{1,3}" = seguido de 1 a 3 dígitos

    .

    Por que o "Y" não aparece? Porque a regex possui um parêntese apenas ao redor dos dígitos, o que significa que só essa parte será capturada para o retorno. Se removesse os parênteses ou colocasse o "Y*" dentro dele, a resposta seria Y123