[SQL] une requête sur une chaine de caractère
ajor
Messages postés
98
Statut
Membre
-
bicboy -
bicboy -
Bonjour,
J'ai une table qui contient un champ, qui contient des adresses mail.
Je suis en train d'essayer d'extraire le nom de domaine (ce qu'il y a après l'@) de chaque adresse , donc supprimer les caractères avant l'@
Vous voyez le truc?
Merci d'avance à ceux qui essaieront de m'aider...
Ajor
J'ai une table qui contient un champ, qui contient des adresses mail.
Je suis en train d'essayer d'extraire le nom de domaine (ce qu'il y a après l'@) de chaque adresse , donc supprimer les caractères avant l'@
Vous voyez le truc?
Merci d'avance à ceux qui essaieront de m'aider...
Ajor
A voir également:
- Erreur numérique ou erreur sur une valeur: tampon de chaîne de caractères trop petit
- Télévision numérique - Guide
- Télévision numérique terrestre - Accueil - TV & Vidéo
- Erreur t32 ✓ - Forum Livebox
- Erreur upes 1025 - Forum Téléviseurs
- Caractères spéciaux - Guide
7 réponses
en sql je ne pense pas que ça soit possible, mais si ton application tourne avec du php, il te suffit de faire quelque chose comme ceci :
$mail = 'exemple@truc.com';
$mail = explode('@', $mail);
$resultat = $mail[1];
echo $resultat;
tu dois utiliser un regex pour prendre tout ce qu'il y a avant le @ et le @ en lui même, il te restera le nom de domaine.
EDIT : utilise l'astuce de ThEBiShOp, elle est plus simple.
EDIT : utilise l'astuce de ThEBiShOp, elle est plus simple.
Heu non, ça ne tourne pas sur PHP, j'essaie de trier les enregistrement d'un fichier selon les nom de domaine.
Il n'y a aucune commende SQL pour extraire un morceau de chaine de caractère?
on m'avait conseillé ça:
UPDATE Matable SET dom = substr([mail],instr([mail],'@')+1);
sachant que dom est mon champ contenant le nom de domaine et mail contenant l'email...
sauf que cette requête fonctionne sur Oracle mais pas sur Access.... :(
Une autre idée?
Il n'y a aucune commende SQL pour extraire un morceau de chaine de caractère?
on m'avait conseillé ça:
UPDATE Matable SET dom = substr([mail],instr([mail],'@')+1);
sachant que dom est mon champ contenant le nom de domaine et mail contenant l'email...
sauf que cette requête fonctionne sur Oracle mais pas sur Access.... :(
Une autre idée?
il faut regarder dans les fonctions de chaque sgbdr... il est tout à fait possible qu'on ne puisse pas le faire avec access
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
il parait qu'on peut utiliser la fonction mid, mais j'ai beau chercher j'y comprend rien...
quelqu'un sait comment utiliser cette fonction?
quelqu'un sait comment utiliser cette fonction?
On dirait qu'il y a une solution avec la fonction Mid, disponible sur Access...
J'ai essayé cette requete
UPDATE Matable SET dom = Mid([mail],Instr("@",[mail]));
dans lequel mail contient mon email et dom doit contenir le nom de domaine.
Sauf que j'obtient une erreur d'échec de conversion de type
j'ai regardé les docs ici:
https://www.techonthenet.com/access/functions/string/mid.php
https://www.techonthenet.com/access/functions/string/instr.php
Est-ce que vous voyez l'erreur?
J'ai essayé cette requete
UPDATE Matable SET dom = Mid([mail],Instr("@",[mail]));
dans lequel mail contient mon email et dom doit contenir le nom de domaine.
Sauf que j'obtient une erreur d'échec de conversion de type
j'ai regardé les docs ici:
https://www.techonthenet.com/access/functions/string/mid.php
https://www.techonthenet.com/access/functions/string/instr.php
Est-ce que vous voyez l'erreur?
Pour info, j'ai trouvé la solution à mon problème en appelant une fonction:
Function RecupererTexteEntreBornes(texte As String, textedebut As String, textefin As String) As String
Dim result As String
Dim debut As Integer
Dim fin As Integer
debut = InStr(1, texte, textedebut)
fin = InStr(debut + Len(textedebut), texte, textefin)
result = ""
If debut > 0 Then
If fin > debut + Len(textedebut) Then
result = Mid(texte, debut + Len(textedebut), fin - debut - Len(textedebut))
Else
result = Right(texte, Len(texte) - debut - Len(textedebut) + 1)
End If
End If
RecupererTexteEntreBornes = result
End Function
Merci beaucoup à tout ceux qui ont essayé de m'aider
A plus
Function RecupererTexteEntreBornes(texte As String, textedebut As String, textefin As String) As String
Dim result As String
Dim debut As Integer
Dim fin As Integer
debut = InStr(1, texte, textedebut)
fin = InStr(debut + Len(textedebut), texte, textefin)
result = ""
If debut > 0 Then
If fin > debut + Len(textedebut) Then
result = Mid(texte, debut + Len(textedebut), fin - debut - Len(textedebut))
Else
result = Right(texte, Len(texte) - debut - Len(textedebut) + 1)
End If
End If
RecupererTexteEntreBornes = result
End Function
Merci beaucoup à tout ceux qui ont essayé de m'aider
A plus
Tu aurais pu essayer d'extraire la derniere partie d'un champ à partir du caractère @ avec :
SELECT
SUBSTRING (ChampSource, PATINDEX ( '%@%' , ChampSource)+1
, LEN(ChampSource)-PATINDEX ( '%;%' , ChampSource)
)
FROM TABLE SOURCE
Ce sont des pour SQL Serveur 2005 Microsoft qui pourraient marcher avec Access
SELECT
SUBSTRING (ChampSource, PATINDEX ( '%@%' , ChampSource)+1
, LEN(ChampSource)-PATINDEX ( '%;%' , ChampSource)
)
FROM TABLE SOURCE
Ce sont des pour SQL Serveur 2005 Microsoft qui pourraient marcher avec Access