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
