Vous n'êtes pas identifié(e).
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
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
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])');
Marc.
Hors ligne
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
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