Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL > Requêtes
Requêtes Forum d'entraide sur les requêtes SQL spécifiques à PostgreSQL, les triggers, les vues, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 13/12/2010, 12h47   #1
Membre du Club
 
Inscription : mai 2008
Messages : 117
Détails du profil
Informations personnelles :
Âge : 23

Informations forums :
Inscription : mai 2008
Messages : 117
Points : 43
Points : 43
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 !
totojordi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2010, 13h45   #2
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 977
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
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 : 10 977
Points : 18 221
Points : 18 221
Envoyer un message via MSN à CinePhil
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 :
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 :
SELECT SUBSTRING(adrel FROM POSITION('.' IN adrel) + 1)
3) Position du second point dans la sous-chaîne :
Code :
SELECT POSITION('.' IN SUBSTRING(adrel FROM POSITION('.' IN adrel) + 1))
4) Position absolue du second point dans l'adrel :
Code :
SELECT POSITION ('.' IN adrel) + POSITION('.' IN SUBSTRING(adrel FROM POSITION('.' IN adrel) + 1))
5) Position de l'@ :
Code :
SELECT POSITION('@' IN adrel)
6) Extraction de '.societe' (pour vérification) :
Code :
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 :
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 de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2010, 14h04   #3
Membre confirmé
 
Homme
Inscription : janvier 2006
Messages : 227
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Corse (Corse)

Informations forums :
Inscription : janvier 2006
Messages : 227
Points : 239
Points : 239
bonjour ,on peut essayer avec des expressions rationnelles
Code :
SELECT substring(mail,'(^[^\.]*\.[^\.]*)')||substring(mail,'@.*$') FROM e_mail
il y a peut_être plus optimisé , je ne suis pas un sprécialiste des regex
xavier-Pierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2010, 14h22   #4
Membre du Club
 
Inscription : mai 2008
Messages : 117
Détails du profil
Informations personnelles :
Âge : 23

Informations forums :
Inscription : mai 2008
Messages : 117
Points : 43
Points : 43
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 !
totojordi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2010, 14h43   #5
Membre confirmé
 
Homme
Inscription : janvier 2006
Messages : 227
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Corse (Corse)

Informations forums :
Inscription : janvier 2006
Messages : 227
Points : 239
Points : 239
un peu mieux

Code :
SELECT regexp_replace(mail,'\.[^\.]*@','@') FROM mail
xavier-Pierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h59.


 
 
 
 
Partenaires

Hébergement Web