[SQL] une requête sur une chaine de caractère

ajor Messages postés 98 Statut Membre -  
 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
A voir également:

7 réponses

ThEBiShOp Messages postés 9307 Date d'inscription   Statut Contributeur Dernière intervention   1 566
 
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;
3
okuni Messages postés 1325 Statut Membre 126
 
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.
0
ajor Messages postés 98 Statut Membre 3
 
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?
0
ThEBiShOp Messages postés 9307 Date d'inscription   Statut Contributeur Dernière intervention   1 566
 
il faut regarder dans les fonctions de chaque sgbdr... il est tout à fait possible qu'on ne puisse pas le faire avec access
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ajor Messages postés 98 Statut Membre 3
 
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?
0
ajor Messages postés 98 Statut Membre 3
 
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?
0
ajor Messages postés 98 Statut Membre 3
 
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
0
bicboy
 
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
0