|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre du Club
![]() Inscription : mai 2008 Messages : 117 ![]() |
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 ! |
|
|
00
|
|
|
#2 |
![]() ![]() |
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 : 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) Code :
SELECT POSITION('.' IN SUBSTRING(adrel FROM POSITION('.' IN adrel) + 1)) Code :
SELECT POSITION ('.' IN adrel) + POSITION('.' IN SUBSTRING(adrel FROM POSITION('.' IN adrel) + 1)) 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)) Code :
SELECT OVERLAY (adrel PLACING '' FROM POSITION ('.' IN adrel) + POSITION('.' IN SUBSTRING(adrel FROM POSITION('.' IN adrel) + 1)) FOR POSITION('@' IN adrel) - 1) 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 ! |
|
00
|
|
|
#3 |
|
Membre confirmé
![]() Inscription : janvier 2006 Messages : 227 ![]() |
bonjour ,on peut essayer avec des expressions rationnelles
Code :
SELECT substring(mail,'(^[^\.]*\.[^\.]*)')||substring(mail,'@.*$') FROM e_mail |
|
|
00
|
|
|
#4 |
|
Membre du Club
![]() Inscription : mai 2008 Messages : 117 ![]() |
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 ! |
|
|
00
|
|
|
#5 |
|
Membre confirmé
![]() Inscription : janvier 2006 Messages : 227 ![]() |
un peu mieux
Code :
SELECT regexp_replace(mail,'\.[^\.]*@','@') FROM mail |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com