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

MS SQL Server Discussion :

Découper une chaine de caractères.


Sujet :

MS SQL Server

  1. #1
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Points : 3 102
    Points
    3 102
    Par défaut Découper une chaine de caractères.
    Bonjour à tous,

    je ne parviens pas à extraire une sous-chaine d'une chaine de caractère dans une de mes requêtes.
    Je sais que c'est normalement à l'applicatif de gérer cela mais je travaille avec SSRS et ne peux donc faire autrement.

    En l'état actuel, j'ai cette requête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT 
             DOC_NOM 'DOC', 
             DOC_TEXT 'TEXT', 
             Convert(varchar, DOC_DATE, 103) 'DATE', 
             DOC_PATH 'PATH'
             FROM T_DOC
             WHERE(DOC_IDAUTEUR = @DOC_IDAUTEUR)
    Je me suis documenté sur les fonctions RIGHT, SUBSTRING ou PATINDEX mais je ne parviens pas à décortiquer ce problème.

    Auriez-vous des pistes s'il vous plaît ?

    D'avance merci

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    356
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 356
    Points : 406
    Points
    406
    Par défaut
    Que veux tu découper ? Pourrais tu être plus explicite car ta requête ne nous informe pas trop ?
    Bon courage pour la suite.

  3. #3
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Points : 3 102
    Points
    3 102
    Par défaut
    pardon, ce n'est effectivement pas clair.

    DOC_PATH me renvoie un varchar de type: http://site/doc/docA.pdf

    or j'ai besoin, pour des raisons d'affichage, de ne montrer que docA.pdf.

    J'ai essayé right(DOC_PATH, PATINDEX('%/%', FIC_FICHIER)) mais patindex part de la gauche de la chaine malgré le RIGHT.

    J'espère avoir été plus clair;


    merci.

  4. #4
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 33
    Points : 25
    Points
    25
    Par défaut
    bonjour,

    Comme tu le dis, il faut utiliser la fonction substring.

    substring fonctionne comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    substring(maChaine, DébutDeLaChaineRécuperer, longueurDeLaChaine)
    Ici, le début de ta chaine à récuperer est 17 ("d" de "docA.pdf" est à la 17ème position de ta chaine (celle ci commence à 0))

    Dans "docA.pdf", il y a 8 caractères.

    Donc, pour récupérer "docA.pdf", tu dois faire comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    substring("http://site/doc/docA.pdf", 17, 8)
    Tu peux également utiliser la fonction indexOf pour avoir la position d'un certain caractère

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    pos = indexOf(caractere)
    substring(maChaine, pos, longueur)

    Bien sûr, tu devra penser à faire une fonction ou procédure si tu répete cette instruction souvent.

    En espérant avoir été clair.

  5. #5
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Points : 3 102
    Points
    3 102
    Par défaut
    Merci pour cette réponse.
    Ne connaissant pas la longueur de ma chaine et la position à laquelle pouvait se trouver le dernier "/" sur lequel je souhaitais me basais je suis passé par une solution un peu différente.

    Mes adresses de doc sont de cette forme: "http://site.com/doc/auteur/doc1.doc"

    j'ai donc utilisé patindex pour récupérer le contenu de la chaine après la partie "/auteur/" puisque celle-ci est unique.

    Ca donne donc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     substring(DOC_PATH, PATINDEX('%/' + AUTEUR_NOM + '/%', DOC_PATH) + len('/' + AUTEUR_NOM + '/'), LEN(DOC_PATH))

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

Discussions similaires

  1. Bash - Découper une chaine de caractères
    Par nicolas.pissard dans le forum Shell et commandes GNU
    Réponses: 13
    Dernier message: 16/12/2014, 13h18
  2. Découper une chaine de caractères
    Par momomafioso dans le forum ASP.NET
    Réponses: 1
    Dernier message: 28/06/2007, 11h11
  3. [SQ2K] Découper une chaine de caractères
    Par maitrebn dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 17/04/2007, 19h22
  4. Réponses: 6
    Dernier message: 15/04/2007, 13h06
  5. [VBA] Découper une chaine de caractères
    Par rantanplan81 dans le forum VBA Access
    Réponses: 3
    Dernier message: 12/04/2007, 15h26

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