PostgreSQL La base de donnees la plus sophistiquee au monde.

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 par ioguix