Communauté francophone de PostgreSQL

La communauté francophone de PostgreSQL

Outils pour utilisateurs

Outils du site


support:trucs_et_astuces:diviser_un_texte_en_plusieurs_lignes

Diviser un texte en plusieurs lignes

Que faire si vous avez une chaîne, que vous voulez la séparer en plusieurs morceaux suivant un pattern et que vous voulez récupérer chaque morceau sur une ligne ?

Commencer par créer la fonction suivante :

CREATE OR REPLACE FUNCTION split_to_rows(TEXT,TEXT) RETURNS SETOF TEXT
 
AS $$
 
    SELECT (string_to_array($1, $2))[s.i]
 
    FROM generate_series(
 
        1,
 
        array_upper(string_to_array($1, $2), 1)
 
    ) AS s(i);
 
$$ LANGUAGE SQL strict;

Pour l'utiliser, rien de plus simple :

dev=# select split_to_rows('aa--bb--cc','--');

split_to_rows
---------------
aa
bb
cc
(3 rows)

Cette fonction a été écrite par David Fetter (voir son message sur pgsql-general).


Guillaume Lelarge le 13/10/2006

support/trucs_et_astuces/diviser_un_texte_en_plusieurs_lignes.txt · Dernière modification: 2008/10/15 16:55 de ioguix