Em 25 de setembro de 2010 22:34, Beto Lima <[email protected]> escreveu:
> Osvaldo obrigado pela ajuda, mas não consegui solucionar desta forma ou não
> entendi direito.
> pelo exemplo que vc passou:
>
> bdteste=# SELECT regexp_replace('<div style="width:425px"
> id="__ss_5278062">',
> E'^(.*)id="__ss_([[:digit:]]*)([^[:digit:]]*$)',E'\\2');
>
> ele me trouxe: 5278062.
>
> Só que até aí tudo bem, mas imagina um monte de linhas na tabela onde estes
> valores mudam.
> Vou fazer aqui um outro exemplo mais simples.
> <div id="__ss_NUMERO AQUI"><a href="http://www.site.com/pagina.php?id=NUMERO
> AQUI&title=teste">link</a></div>
>
> Cada registro vai ter o mesmo conteudo acima mudando apenas os seus valores
> NUMERO AQUI.
> Então o que eu preciso é recuperar somente esses valores.
> Grato...
>


A função acima extrai a cadeia de algarismos que se segue à expressão:
id="__ss_
delimitado pelo primeiro caractere não-numérico que se seguir.

Para o seu exemplo:
SELECT 
regexp_replace(seu_campo,E'^(.*)id="__ss_([[:digit:]]*)([^[:digit:]]*$)',E'\\2')
FROM sua_tabela;
ela extrairia o primeiro NUMERO AQUI de seu_campo (isto é todos os
algarismos - 0 a 9 - até o primeiro caractere não-numérico, no caso o
caractere ") de cada linha de sua tabela.

Para mais detalhes sobre expressões regulares veja:
http://aurelio.net/er/
além do capítulo do manual do PostgreSQL:
http://www.postgresql.org/docs/current/interactive/functions-matching.html#FUNCTIONS-POSIX-REGEXP

Adapte para as outras situações e concatene os resultados, se for necessário.

Osvaldo
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a