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 :

SQL2005 - Récupérer une chaine de caractère à gauche d'un caractère


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Juin 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 22
    Par défaut SQL2005 - Récupérer une chaine de caractère à gauche d'un caractère
    Bonsoir à tous,

    Est-ce qu'il possible de récupérer une chaine de caractère d'un champ texte à gauche d'un tiret ? Par exemple :

    'chaîne1 - chaîne2' => 'chaîne1'

    chaîne1 n'a pas de longeur sinon on pourrait utiliser SUBSTRING

    Donc est-ce que l'on prendre tous les caractères à gauche du tiret ?

    Merci de votre aide.

  2. #2
    Membre averti
    Homme Profil pro
    Inscrit en
    Juin 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 22
    Par défaut
    Désolé pour le dérangement,

    j'ai finalement trouvé un contournement à ma problématique, car la chaîne est une liste de valeur que j'ai mis dans une table de dimension et donc après, j'ai pu faire des recherches dans "C1" avec LIKE sur "LIB" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT        T1.C1,  Dim.LIB
    FROM            T1  INNER JOIN
    Dim ON T1.C1 LIKE '%' + RTRIM(Dim.LIB) + ' -' + '%'

  3. #3
    Membre éprouvé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2011
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 118
    Par défaut
    Bonjour,

    Avec les fonctions LEFT et CHARINDEX, tu devrais t'en sortir de façon plus élégante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT T1.C1, Dim.LIB
    FROM T1 
    INNER JOIN Dim ON T1.C1 = LEFT(Dim.LIB, CHARINDEX(' -', Dim.LIB)-1)

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Juin 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 22
    Par défaut
    Bonsoir SQL Dev,

    Merci pour ta réponse, mais cela ta proposition me retourne une erreur alors que ça fonctionne avec ma version :

    "Paramètre de longueur non valide passé à la fonction LEFT ou SUBSTRING."

    Quand cela fonctionne sur mon exemple, j'ai bien ce qu'il me fallait :
    C1 LIB
    A - B A
    C - D C
    E - F E

    Merci pour ta réponse.

  5. #5
    Membre éprouvé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2011
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 118
    Par défaut
    Hello,

    J'ai du inverser les 2 champs de comparaison, en fait ça doit être ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT T1.C1, Dim.LIB
    FROM T1 
    INNER JOIN Dim ON Dim.LIB = LEFT(T1.C1, CHARINDEX(' -', T1.C1)-1)
    Le principe est de prendre les caractères en partant de la gauche jusqu'à la position de la chaine " -" moins 1 dans la colonne T1.C1, puis de comparer cette chaine à la colonne Dim.Lib

  6. #6
    Membre averti
    Homme Profil pro
    Inscrit en
    Juin 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 22
    Par défaut
    Bonsoir SqlDev et merci pour ta corection et explication

Discussions similaires

  1. [MySQL] Récupérer une chaine de caractère dans un colonne
    Par djdamage dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 29/07/2009, 15h40
  2. [RegEx] Récupérer une chaine de caractères
    Par lucke34 dans le forum Langage
    Réponses: 2
    Dernier message: 13/06/2009, 15h19
  3. [RegEx] Récupérer une chaine de caractéres par strpos
    Par bdptaki dans le forum Langage
    Réponses: 11
    Dernier message: 21/04/2009, 11h43
  4. Réponses: 5
    Dernier message: 22/06/2006, 17h19
  5. Récupérer une chaine de caractère dans une page
    Par BrunS dans le forum Langage
    Réponses: 3
    Dernier message: 15/11/2005, 14h28

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