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