Récupérer nom de domaine
Fermé
micka72
-
4 janv. 2014 à 17:26
heliconius Messages postés 545 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 23 juin 2023 - 6 janv. 2014 à 12:59
heliconius Messages postés 545 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 23 juin 2023 - 6 janv. 2014 à 12:59
A voir également:
- Récupérer nom de domaine
- Recuperer video youtube - Guide
- Recuperer message whatsapp - Guide
- Comment récupérer un compte facebook piraté - Guide
- Nom de l'adresse ✓ - Forum Réseaux sociaux
- Impossible de récupérer mon compte gmail - Guide
2 réponses
heliconius
Messages postés
545
Date d'inscription
mardi 1 juillet 2008
Statut
Membre
Dernière intervention
23 juin 2023
139
5 janv. 2014 à 20:20
5 janv. 2014 à 20:20
Bonsoir,
Je pars du principe, pour l'exemple fourni, que tu as une table "Clients" avec les champs : nom, prenom, mail.
Je pars du principe, pour l'exemple fourni, que tu as une table "Clients" avec les champs : nom, prenom, mail.
SELECT nom, prenom, mail, substring(mail from locate('@', mail)+1) AS domaine FROM Clients WHERE mail != '';
heliconius
Messages postés
545
Date d'inscription
mardi 1 juillet 2008
Statut
Membre
Dernière intervention
23 juin 2023
139
Modifié par heliconius le 5/01/2014 à 23:53
Modifié par heliconius le 5/01/2014 à 23:53
Re-bonsoir,
La fonction MySQL locate('@', mail) donne la position du caractère '@' dans le champ mail soit, par exemple, 7 pour l'enregistrement n° 2 (lduval@hotmail.com). C'est à dire que le premier caractère du nom de domaine est à la position 8.
La fonction substring(mail from 8) va fournir tous les caractères du champ mail à partir du 8ème caractère.
Comme 8 peut être remplacé par locate('@', mail)+1, en effectuant la substitution on obtient substring(mail from locate('@', mail)+1).
NB: Pour chaque enregistrement la position du caractère '@' sera calculée.
Le AS domaine rajouté à la suite ne sert pour que donner un nom à la colonne.
Tu trouveras ci-dessous les sorties d'un script :
- la création d'une table Clients,
- la saisie d'enregistrements (1 avec le mail vide)
- l'affichage du contenu de la table
- l'affichage des champs et du nom de domaine (si adresse mail)
Est-ce que c'est plus clair maintenant ? :o)
Je ne sais pas quel est ton environnement de travail mais le script ci-dessous a été exécuté avec le client mysql dans l'environnement suivant :
Script :
Un problème sans solution est un problème mal posé. (Albert Einstein)
La fonction MySQL locate('@', mail) donne la position du caractère '@' dans le champ mail soit, par exemple, 7 pour l'enregistrement n° 2 (lduval@hotmail.com). C'est à dire que le premier caractère du nom de domaine est à la position 8.
La fonction substring(mail from 8) va fournir tous les caractères du champ mail à partir du 8ème caractère.
Comme 8 peut être remplacé par locate('@', mail)+1, en effectuant la substitution on obtient substring(mail from locate('@', mail)+1).
NB: Pour chaque enregistrement la position du caractère '@' sera calculée.
Le AS domaine rajouté à la suite ne sert pour que donner un nom à la colonne.
Tu trouveras ci-dessous les sorties d'un script :
- la création d'une table Clients,
- la saisie d'enregistrements (1 avec le mail vide)
- l'affichage du contenu de la table
- l'affichage des champs et du nom de domaine (si adresse mail)
mysql> DROP TABLE IF EXISTS Clients; Query OK, 0 rows affected, 1 warning (0.00 sec) mysql> CREATE TABLE Clients( -> nom varchar(25) not null, -> prenom varchar(25) not null, -> mail varchar(45) not null -> ) type=MyISAM comment='Table de clients'; INSERT INTO Clients VALUES('DUPONT','Marc','marc.moreau@free.fr'); INSERT INTO Clients VALUES('DUVAL','Lou','lduval@hotmail.com'); INSERT INTO Clients VALUES('KERGROACH','Gwennaig',''); INSERT INTO Clients VALUES('MOREAU','Jean','jmoreau@wanadoo.fr'); Query OK, 0 rows affected, 1 warning (0.08 sec) mysql> mysql> INSERT INTO Clients VALUES('DUPONT','Marc','marc.moreau@free.fr'); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO Clients VALUES('DUVAL','Lou','lduval@hotmail.com'); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO Clients VALUES('KERGROACH','Gwennaig',''); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO Clients VALUES('MOREAU','Jean','jmoreau@wanadoo.fr'); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO Clients VALUES('MARTIN','Denise','dmartin@free.fr'); Query OK, 1 row affected (0.00 sec) mysql> mysql> SELECT * FROM Clients; +-----------+-----------+----------------------+ | nom | prenom | mail | +-----------+-----------+----------------------+ | DUPONT | Marc | marc.moreau@free.fr | | DUVAL | Lou | lduval@hotmail.com | | KERGROACH | Gwennaig | | | MOREAU | Jean | jmoreau@wanadoo.fr | | MARTIN | Denise | dmartin@free.fr | +-----------+-----------+----------------------+ 5 rows in set (0.00 sec) mysql> mysql> SELECT -> nom, -> prenom, -> mail, -> substring(mail from locate('@',mail)+1) AS domaine -> FROM -> Clients -> WHERE -> mail != ''; +--------+-----------+----------------------+-------------+ | nom | prenom | mail | domaine | +--------+-----------+----------------------+-------------+ | DUPONT | Marc | marc.moreau@free.fr | free.fr | | DUVAL | Lou | lduval@hotmail.com | hotmail.com | | MOREAU | Jean | jmoreau@wanadoo.fr | wanadoo.fr | | MARTIN | Denise | dmartin@free.fr | free.fr | +--------+-----------+----------------------+-------------+ 4 rows in set (0.00 sec)
Est-ce que c'est plus clair maintenant ? :o)
Je ne sais pas quel est ton environnement de travail mais le script ci-dessous a été exécuté avec le client mysql dans l'environnement suivant :
OS: Debian GNU/Linux 5.0 mysql: Ver 14.12 Distrib 5.0.51a MySQL: Server version: 5.0.51a-24+lenny5 (Debian)
Script :
DROP TABLE IF EXISTS Clients; CREATE TABLE Clients( nom varchar(25) not null, prenom varchar(25) not null, mail varchar(45) not null ) type=MyISAM comment='Table de clients'; INSERT INTO Clients VALUES('DUPONT','Marc','marc.moreau@free.fr'); INSERT INTO Clients VALUES('DUVAL','Lou','lduval@hotmail.com'); INSERT INTO Clients VALUES('KERGROACH','Gwennaig',''); INSERT INTO Clients VALUES('MOREAU','Jean','jmoreau@wanadoo.fr'); INSERT INTO Clients VALUES('MARTIN','Denise','dmartin@free.fr'); SELECT * FROM Clients; SELECT nom, prenom, mail, substring(mail from locate('@',mail)+1) AS domaine FROM Clients WHERE mail != '';
Un problème sans solution est un problème mal posé. (Albert Einstein)
heliconius
Messages postés
545
Date d'inscription
mardi 1 juillet 2008
Statut
Membre
Dernière intervention
23 juin 2023
139
6 janv. 2014 à 12:59
6 janv. 2014 à 12:59
Si cette réponse a résolu ton problème, merci de la cocher avec [Résolu]. Pense aux autres qui cherchent peut-être à résoudre le même problème que toi...
5 janv. 2014 à 21:14
Erreur : "ERROR: function locate(unknown, character varying) does not exist"