Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Printemps des cartes 2024

#1 Wed 04 March 2015 09:41

aurelien.quiblier
Participant actif
Lieu: Lyon
Date d'inscription: 26 Oct 2010
Messages: 146
Site web

Requête PgAdmin - Sélection entre balises - GéoSource

Bonjour,

Suite à un problème sur GéoSource, Cf. message suivant :

Code:

http://georezo.net/forum/viewtopic.php?id=96081

je souhaiterais effectuer une requête SQL, sur une des tables de la BD PostgreSQL utilisée par GéoSource (pour stocker les métadonnées et informations sur les utilisateurs).

J'aimerais sélectionner seulement les x caractères se situant entre les balises '<gmd:title>' et '</gmd:title>'.

J'ai utilisé la requête suivante :

Code:

select substring(data from (select position('<gmd:title>' in data)) for (select position('</gmd:title>' in data))) from metadata

Celle-ci me retourne tous les caractères des enregistrements compris entre la première balise <gmd:title> et la dernière balise </gmd:title>.
Le problème est que je souhaiterais que ce soit la première et non la dernière balise  </gmd:title> qui soit prise en compte. Car il y a 3 balises '</gmd:title>' au total.
Est-ce que ceci est possible ?

Merci d'avance.

Dernière modification par aurelien.quiblier (Wed 04 March 2015 09:41)


Aurélien QUIBLIER
arx iT

Hors ligne

 

#2 Wed 04 March 2015 11:13

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1536

Re: Requête PgAdmin - Sélection entre balises - GéoSource

Bonjour,

Utilisez plutot une expression régulière pour cela, vous aurez plus de controle sur ce que vous voulez extraire. (http://www.postgresql.org/docs/9.3/inte … tring.html)

PostgreSQL a aussi des fonctions pour traiter le XML, peut etre des pistes de ce coté.

Nicolas

Hors ligne

 

#3 Wed 04 March 2015 11:35

Martin Bocquet
Participant occasionnel
Date d'inscription: 4 Mar 2015
Messages: 22

Re: Requête PgAdmin - Sélection entre balises - GéoSource

Bonjour,

Votre problème peut se régler via l'opérateur "substring", qui permet de récupérer une partie de la chaîne de caractères. Il faut cependant utiliser les expressions régulières.

Je pense que ceci pourrait répondre à votre problème :

Code:

substring('[balise] bla bla [/balise] blablabla [/balise]',  '[balise].+?[/balise]')

Notez bien la présence du caractère "?", qui permet de prendre la plus petite chaîne.

Bonne journée,

Dernière modification par Martin Bocquet (Wed 04 March 2015 13:34)

Hors ligne

 

#4 Wed 04 March 2015 12:33

aurelien.quiblier
Participant actif
Lieu: Lyon
Date d'inscription: 26 Oct 2010
Messages: 146
Site web

Re: Requête PgAdmin - Sélection entre balises - GéoSource

Merci pour vos réponses.

J'ai réussi à résoudre mon problème de la manière suivante, en SQL :

SELECT
metadata.id,
split_part(substring(data from (select position('<gmd:title>' in data)) for (select position('</gmd:title>' in data))), '</gmd:title>', 1),
users.username

FROM metadata, users
   
WHERE owner = users.id


Celle-ci permet d’afficher une liste de fiches de métadonnées, avec leur titre (compris entre les balises '<gmd:title>' et '</gmd:title>'), leur identifiant et l’utilisateur qui l’a créée.


Aurélien QUIBLIER
arx iT

Hors ligne

 

Pied de page des forums

Powered by FluxBB