IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

Recupérer une partie d'un varchar


Sujet :

Langage SQL

  1. #1
    Membre chevronné Avatar de Phiss
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2005
    Messages
    676
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2005
    Messages : 676
    Par défaut Recupérer une partie d'un varchar
    Bonjour,

    Voilà ce que je voudrais faire.

    J'ai une base de données en sqlserver avec une table ou l'on a des adresses mails.

    Je voudrais pouvoir récupérer les noms de domaines de ses mails.

    Donc je recherche une requete qui pourrait me faire resortir qu'une partie de mon varchar.

    Du style j'ai monmail@mail.com je voudrais récupérer mail.com.

    Est ce que vous avez une idée?

    Merci.

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 140
    Par défaut
    En SQL standard :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT  SUBSTRING(adresse FROM POSITION('@' IN adresse) + 1)
    FROM    matable
    ;
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre chevronné Avatar de Phiss
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2005
    Messages
    676
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2005
    Messages : 676
    Par défaut
    Cela me met un erreur sur le mot "from" lorsque je l'execute depuis sqlserver.

    Une idée?

  4. #4
    Rédactrice

    Avatar de Fleur-Anne.Blain
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 636
    Par défaut
    fait voir la requete tu as exécuté toi??

    Citation Envoyé par Phiss Voir le message
    Cela me met un erreur sur le mot "from" lorsque je l'execute depuis sqlserver.

    Une idée?
    la culture c'est comme la confiture moins on en a plus on l'étale.

    Mes tutos

  5. #5
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 140
    Par défaut
    Citation Envoyé par Phiss Voir le message
    Une idée?
    Regarder ici pour plus d'informations sur les fonctions et leur implémentation dans chaque SGBD :
    Les Fonctions en SQL
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  6. #6
    Rédactrice

    Avatar de Fleur-Anne.Blain
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 636
    Par défaut
    Pour sql server la syntaxe est : SUBSTRING ( expression ,début , longueur )
    la culture c'est comme la confiture moins on en a plus on l'étale.

    Mes tutos

  7. #7
    Membre chevronné Avatar de Phiss
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2005
    Messages
    676
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2005
    Messages : 676
    Par défaut
    Merci pour vos reponse, j'ais bien avancer avec le fonction substring.
    Mais je bloque du coup sur le positionnement de l'arobase.
    J'ai trouvé la fonction patindex mais elle me renvoit toujours 0.

    Voilà ma requete actuelle.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT patindex(client,'@'),
    SUBSTRING(client, patindex(client,'@')+1, 20) as domai 
    FROM stats_mail
    Vous voyez quelque chose qui bloque?


    [Edit]Le champ client contient l'adresse mail a tester [/edit]

  8. #8
    Membre Expert
    Profil pro
    Dév
    Inscrit en
    Juin 2007
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Dév

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 165
    Par défaut
    Je pense plutôt qu'il ne faut pas que tu utilises SUBSTR là. Pour SQL Server dans ton cas la fonction RIGHT est plus apte vu qu'elle retourne toute la partie droite d'une chaine.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT RIGHT(monMail@mail.com, (LEN(monMail@mail.com)-CHARINDEX(monMail@mail.com, '@')))

    Normalement si je me suis pas gouré cela va prendre toutes les lettres à droite à partir du @. Il faudrait que tu le testes.

  9. #9
    Membre chevronné Avatar de Phiss
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2005
    Messages
    676
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2005
    Messages : 676
    Par défaut
    En mettant cette requete adapter à ma table, cela me renvoit toute l'adresse.

    Je ne sais pas pourquoi mais j'ai l'impression qu'il n'arrive pas a trouver le caractère @ dans mes chaines de caractères...

    [edit]
    En faites quelques soit le caractère mis dans la requete cela me renvoit toujours l'adresse complète...[/edit]

  10. #10
    Membre Expert
    Profil pro
    Dév
    Inscrit en
    Juin 2007
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Dév

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 165
    Par défaut
    Salut, c'est bon j'ai trouvé. Je viens de tester sur SQL server 2005 en fait j'avais inversé les chaines dans la fonction CHARINDEX !!!

    Voici normalement le bon code !!!


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT RIGHT('monMail@mail.com', (LEN('monMail@mail.com')-CHARINDEX('@', 'monMail@mail.com')))
    Normalement ça te renvoie bien 'mail.com'.

  11. #11
    Membre chevronné Avatar de Phiss
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2005
    Messages
    676
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2005
    Messages : 676
    Par défaut
    Merci bien cela marche.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Recupérer seulement une partie de réponse
    Par djamsdjams dans le forum Langage SQL
    Réponses: 2
    Dernier message: 13/12/2008, 15h06
  2. Recupérer une partie de l'adresse
    Par snyfir dans le forum Langage
    Réponses: 2
    Dernier message: 25/04/2008, 13h31
  3. Comment Recupérer une partie du fichier de log
    Par marvelromy dans le forum Administration
    Réponses: 3
    Dernier message: 07/11/2007, 15h50
  4. Réponses: 3
    Dernier message: 08/09/2007, 12h10
  5. Réponses: 2
    Dernier message: 06/10/2005, 11h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo