Vous n'êtes pas identifié(e).

#1 08/12/2009 23:45:06

martinf
Membre

Extraction d'une chaîne pour mise a jour d'un champ

Bonjour

J'ai un champ "adresse" qui contient un code postal. Par exemple:

SUNNYBROOK & WOMENS HOSP,2075 BAYVIEW, TORONTO, ON M4N 3M5, CANADA

Je veux extraire le code postal (ici M4N 3M5) pour le mettre dans un champ "codepostal". Je sais qu'il a la forme [A-Z]#[A-Z] #[A-Z]#[A-Z]

Donc, comment aller le chercher dans mon champ adresse et le mettre dans codepostal

Merci

Martin F

Hors ligne

#2 09/12/2009 01:24:41

martinf
Membre

Re : Extraction d'une chaîne pour mise a jour d'un champ

Dis d'une façon plus simple, ca donne: "cherche n'importe où dans le champ adresse la chaine ayant le format [A-Z]#[A-Z] #[A-Z]#[A-Z] et met-la dans codepostal"

Martin

Hors ligne

#3 09/12/2009 07:16:39

Marc Cousin
Membre

Re : Extraction d'une chaîne pour mise a jour d'un champ

Ce qui vous intéresse est la capture par expression régulière :
SELECT regexp_matches('adresse', '([A-Z]\d([A-Z] \d([A-Z]\d([A-Z])');

http://docs.postgresql.fr/8.4/functions-matching.html


Marc.

Hors ligne

#4 09/12/2009 16:44:38

FNo
Membre

Re : Extraction d'une chaîne pour mise a jour d'un champ

Je pencherai plutôt pour ceci, sauf erreur de ma part :

SELECT regexp_matches('SUNNYBROOK & WOMENS HOSP,2075 BAYVIEW, TORONTO, ON M4N 3M5, CANADA', '[A-Z]\\d[A-Z]\\s\\d[A-Z]\\d');

Hors ligne

#5 09/12/2009 16:58:48

Marc Cousin
Membre

Re : Extraction d'une chaîne pour mise a jour d'un champ

En fait ça dépend si on est en standard_conforming_strings je pense (c'était mon cas). Donc si on veut vraiment être correct :

SELECT regexp_matches('SUNNYBROOK & WOMENS HOSP,2075 BAYVIEW, TORONTO, ON M4N 3M5, CANADA', E'[A-Z]\\d[A-Z]\\s\\d[A-Z]\\d');


Marc.

Hors ligne

Pied de page des forums