2014-07-01 11:39 GMT-03:00 Deliane Andrade <[email protected]>:
> Tenho um campo do tipo string que está armazenado da seguinte forma:
> {51|15057267||5911898||563507-1827
> |1|1|14||||||||||||||,51|15057267||5911898||563737-1827
> |1|1|14||||||||||||||,51|15057267||5911898||563768-1827|1|1|26||||||||||||||,51|15057267||5911898||563564-1827|1|1|26||||||||||||||,51|15057267||5911898||563617-1827|1|1|26||||||||||||||,51|15057267||5911898||563721-1827|1|1|14||||||||||||||,51|15057267||5911898||563093-1827|1|1|26||||||||||||||,51|15057267||5911898||563092-1827|1|1|12|26|||||||||||||,51|15057267||5911898||563722-1827|1|1|14||||||||||||||,51|15057267||5911898||586654-1827|1|1|26||||||||||||||,51|15057267||5911898||563369-1827|1|1|26||||||||||||||,51|15057267||5911898||585761-1827|1|1|26||||||||||||||,51|15057267||5911898||563080-1827|1|1|26||||||||||||||,51|15057267||5911898||563094-1827|1|1|26||||||||||||||}
>
> Eu preciso quebrar essa string a cada vírgula (e sem as chaves também)
> com quebra de linha ,de forma que fique assim:
É possível fazer com funções de regexp:
SELECT
array_to_string(regexp_split_to_array(regexp_replace(campo_string,
'^\{(.*)\}$', '\1'), ','), E'\n')
FROM sua_tabela;
Tem várias outras alternativas, essa é uma simples e direta. Você terá que
trabalhar nos "escapes" caso esteja com standard_conforming_string como off.
Atenciosamente,
--
Matheus de Oliveira
Analista de Banco de Dados
Dextra Sistemas - MPS.Br nível F!
www.dextra.com.br/postgres
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral