Rechercher : dans
Par :

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

Dernière réponse le 13 jan 2009 à 17:05:29 ajor, le 13 jan 2009 à 15:01:05 
 Signaler ce message aux modérateurs

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

Configuration: Windows XP
Firefox 3.0.5

Meilleures réponses pour « [SQL] une requête sur une chaine de caractère » dans :
Oracle - Echappement de caractères spéciaux VoirPour certaines requêtes SQL, nous avons besoin de rechercher des chaînes de caractères contenant des caractères spéciaux tels que '%' Dans l'exemple suivant, qui est faux, le besoin est de trouver les enregistrements contenant au milieu le caractère...
VBScript - Les fonctions de chaînes de caractères VoirLes fonctions de chaînes de caractères Fonction Description Filter(InputStrings, Value[, Include[, Compare]]) Sélectionne des chaînes de caractères parmi un tableau de chaînes...
Les chaînes de caractères en C++ VoirQu'est-ce qu'une chaîne de caractères ? Une chaîne de caractères (appelée string en anglais) est une suite de caractères, c'est-à-dire un ensemble de symboles faisant partie du jeu de caractères, défini par le code ASCII. En langage C++, une...
Langage C - Les chaînes de caractères VoirQu'est-ce qu'une chaîne de caractères ? Une chaîne de caractères (appelée string en anglais) est une suite de caractères, c'est-à-dire un ensemble de symboles faisant partie du jeu de caractères, défini par le code ASCII. En langage C, une chaîne...

1

ThEBiShOp, le 13 jan 2009 à 15:07:09

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;

Répondre à ThEBiShOp

2

okuni, le 13 jan 2009 à 15:08:00

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. L'amour, c'est comme les spaghettis; quand c'est mou, c'est ­cuit. (proverbe belge)

Répondre à okuni

3

ajor, le 13 jan 2009 à 15:39:53

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?

Répondre à ajor

4

ThEBiShOp, le 13 jan 2009 à 15:45:23

Il faut regarder dans les fonctions de chaque sgbdr... il est tout à fait possible qu'on ne puisse pas le faire avec access

Répondre à ThEBiShOp

5

ajor, le 13 jan 2009 à 16:04:21

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?

Répondre à ajor

6

ajor, le 13 jan 2009 à 16:17:35

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:
http://www.techonthenet.com/access/functions/string/mid.php
http://www.techonthenet.com/access/functions/string/instr.php

Est-ce que vous voyez l'erreur?

Répondre à ajor

7

 ajor, le 13 jan 2009 à 17:05:29

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

Répondre à ajor
Collection CommentÇaMarche.net