Récupérer nom de domaine
micka72
-
heliconius Messages postés 584 Statut Membre -
heliconius Messages postés 584 Statut Membre -
Bonjour à tous,
Je souhaite récupérer depuis une colonne email, uniquement le nom de domaine exemple : pour une adresse ***@***, je souhaite avoir comme résultat "monnomdedoamine.com", j'ai réussi à tester que mon adresse est valide ok. Je pense utiliser la fonction SUBSTRING mais je n'arrive pas à trouver la syntaxe exacte.
Merci d'avance
Je souhaite récupérer depuis une colonne email, uniquement le nom de domaine exemple : pour une adresse ***@***, je souhaite avoir comme résultat "monnomdedoamine.com", j'ai réussi à tester que mon adresse est valide ok. Je pense utiliser la fonction SUBSTRING mais je n'arrive pas à trouver la syntaxe exacte.
Merci d'avance
A voir également:
- Récupérer nom de domaine
- Recuperer message whatsapp supprimé - Guide
- Récupérer mon compte facebook désactivé - Guide
- Nom de l'adresse - Forum Jeux vidéo
- Impossible de récupérer mon compte gmail - Guide
- Comment recuperer une video sur youtube - Guide
2 réponses
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 != '';
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)
Erreur : "ERROR: function locate(unknown, character varying) does not exist"