IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes PostgreSQL Discussion :

Modifier toutes les adresses mails de la colonne


Sujet :

Requêtes PostgreSQL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    117
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 117
    Points : 78
    Points
    78
    Par défaut Modifier toutes les adresses mails de la colonne
    Bonjour,

    Dans ma base, j'ai une table "e_mail" ou les adresses sont de la forme :

    prenom.nom.societeA@domaine.com ou
    prenom.nom.societeB@domaine.com

    Je dois supprimer le .societeA sur toutes les adresses, mais ce .societe est variable.

    Est-ce que je dois faire une requête pour chaque société ? (Recherche du nom puis suppression) ou est-il possible de tout faire d'un coup ?

    Merci
    Traque les Travestis du forum

    Deux de trouvés !

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Soit la colonne adrel contenant une adresse du type 'prenom.nom.societe@domain.com'.

    Si toutes les adrels ont exactement 2 points avant @, on peut extraire '.societe' en charchant la position du second point et de l'@.

    Il faut jouer avec les fonctions de chaînes de caractères de Postgresql.

    Allons-y progressivement...

    1) Position du premier point :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT (POSITION('.' IN adrel)
    2) Je garde la partie droite de l'adrel à partir du premier point + 1 caractère, c'est à dire à partir du premier caractère du nom :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT SUBSTRING(adrel FROM POSITION('.' IN adrel) + 1)
    3) Position du second point dans la sous-chaîne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT POSITION('.' IN SUBSTRING(adrel FROM POSITION('.' IN adrel) + 1))
    4) Position absolue du second point dans l'adrel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT POSITION ('.' IN adrel) + POSITION('.' IN SUBSTRING(adrel FROM POSITION('.' IN adrel) + 1))
    5) Position de l'@ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT POSITION('@' IN adrel)
    6) Extraction de '.societe' (pour vérification) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT SUBSTRING (adrel FROM POSITION ('.' IN adrel) + POSITION('.' IN SUBSTRING(adrel FROM POSITION('.' IN adrel) + 1)) FOR POSITION('@' IN adrel))
    7) Suppression de .societe en se basant seulement sur la position du second point et de l'@ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT OVERLAY (adrel PLACING '' FROM POSITION ('.' IN adrel) + POSITION('.' IN SUBSTRING(adrel FROM POSITION('.' IN adrel) + 1)) FOR POSITION('@' IN adrel) -  1)
    Je n'ai pas Postgresql installé sur ma machine au boulot pour tester.

    Bonne chance !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corse (Corse)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 476
    Points : 831
    Points
    831
    Par défaut
    bonjour ,on peut essayer avec des expressions rationnelles
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select substring(mail,'(^[^\.]*\.[^\.]*)')||substring(mail,'@.*$') from e_mail
    il y a peut_être plus optimisé , je ne suis pas un sprécialiste des regex

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    117
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 117
    Points : 78
    Points
    78
    Par défaut
    Merci pour vos réponses, je vais tester tout ça je posterais la réponse ensuite.

    Traque les Travestis du forum

    Deux de trouvés !

  5. #5
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corse (Corse)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 476
    Points : 831
    Points
    831
    Par défaut
    un peu mieux

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select regexp_replace(mail,'\.[^\.]*@','@') from mail

Discussions similaires

  1. Réponses: 2
    Dernier message: 05/11/2010, 21h30
  2. Modifier toutes les valeurs d'une colonne
    Par charlie03 dans le forum Débuter
    Réponses: 5
    Dernier message: 10/04/2009, 08h36
  3. [MySQL] Récuperer toutes les adresse mails d'une table
    Par cinou01 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 25/03/2009, 20h08
  4. Réponses: 2
    Dernier message: 25/03/2008, 18h00
  5. selection toute les adresse mail en un clic
    Par popofpopof dans le forum VBA Access
    Réponses: 2
    Dernier message: 23/01/2008, 21h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo