PostgreSQL
La base de données la plus sophistiquée au monde.

Ouverture de session

Navigation

Contactez-nous

Administration du site :
"equipe chez postgresqlfr point org"

Contact presse :
"fr chez postgresql point org"

Contact association :
"bureau chez postgresqlfr point org"

Questions PostgreSQL :
 IRC :
  serveur irc.freenode.net
  canal #postgresqlfr

Recherche

Accéder aux archives

« Octobre 2008  
Lun Mar Mer Jeu Ven Sam Dim
  2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31  

Syndication

Flux XML

Sondage

Quelle est la version de PostgreSQL la plus répandue sur vos serveurs ?
8.3
10%
8.2
42%
8.1
40%
8.0
2%
7.4
6%
7.3 ou antérieure
0%
Nombre de votes: 48

diviser un texte en plusieurs lignes

| diviser un texte en plusieurs lignes

Par Guillaume Lelarge le 13/10/2006 - 11:18

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).

Options d'affichage des commentaires

Sélectionnez la méthode d'affichage des commentaires que vous préférez, puis cliquez sur "Sauvegarder les paramètres" pour activer vos changements.

Recréer une chaîne à partir de plusieurs lignes

h.henoch/ = 17 Octobre, 2006 - 10:17

Ce commentaire fait suite à celui de Guillaume Lelarge. Il s'agit de faire l'inverse. La méthode est simple mais il faut avoir lue la doucmentation. Il existe un constructeur de tableau (voir la documentation 'Syntaxe SQL') qui permet de construire un tableau à partir d'une requête :array(ma requête).

Ainsi la solution est :

select array_to_string(array( ma requête ), séparateur) ;

Par exemple pour suivre l'exemple de Guillaume :

select array_to_string(array( select 'aa' union select 'bb' union select 'cc' ), '--')


© PostgreSQLFr, tous droits réservés.
Site déclaré à la CNIL sous le numéro 1074678, conformément à la Loi en vigueur.