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 :

manipulation de chaine de caratéres en MS SQL2005


Sujet :

MS SQL Server

  1. #1
    Membre confirmé
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Janvier 2003
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 85
    Par défaut manipulation de chaine de caratéres en MS SQL2005
    Bonjour à tous,
    je suis nouveau en sql. Dans une table j'ai un champ qui contient des données de la forme :
    DEVIS CLIENT N° 26 du 06/11/2009 16 et j'aimerairs récupérer un champ qui aurait la fome : DEVIS CLIENT N° 26 du 06/11/2009.

    Comment faire ?

    Merci de votre aide.

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Conseil : donnez plus de détails (beaucoup plus) sur votre problème.
    Est-ce que ce que vous voulez éliminer de votre chaîne est toujours les mêmes caractères, sont-ils toujours au même endroit, la longueur du reste est-elle toujours fixe ?

    Pour la résolution de votre problème, il faudra combiner les fonctions LEFT ainsi que CHARINDEX et / ou PATHINDEX.

  3. #3
    Membre confirmé
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Janvier 2003
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 85
    Par défaut Manipulation de chaine de caratéres en MS SQL2005
    Re,

    La longueur n'est pas fixe, sinon ça serais facile. Le numéro de devis s'incremante pour l'instant il est à deux chiffre puis il passera à 3 voir 4 ou 5chiffre et peut-etre 6 ou 7. Et l'année est 2009 elle pourra devenir 2010 2011 etc...

    DEVIS CLIENT N° 26 du 06/11/2009 16 je veux : DEVIS CLIENT N° 26 du 06/11/2009
    DEVIS CLIENT N° 56878 du 06/11/2012 9856 je veux : DEVIS CLIENT N° 56878 du 06/11/2012

    Cordialement.

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    J'espère en tout cas que vous comprenez pourquoi le stockage des informations dans une base de données doit être atomique !

    Vous pouvez vous appuyer sur le fait que le dernier nombre est séparé par un espace :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    with MaTable (col) AS
    (
    select 'DEVIS CLIENT N° 26 du 06/11/2009 16' union all
    select 'DEVIS CLIENT N° 56878 du 06/11/2012 9856'
    )
    select left(col, len(col)-charindex(' ', reverse(col))) as new_col
      from MaTable;
     
    new_col
    ----------------------------------------
    DEVIS CLIENT N° 26 du 06/11/2009
    DEVIS CLIENT N° 56878 du 06/11/2012

  5. #5
    Membre confirmé
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Janvier 2003
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 85
    Par défaut Manipulation de chaine
    Merci pour ta réponse c'est tout à fait ce que je cherche.

    Comment rendre la discussion close. Merci



    Ciao

  6. #6
    Membre confirmé
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Janvier 2003
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 85
    Par défaut Manipulation de chaine
    Rebonsoir,
    je viens de m'apercoir dans ma base des fois le champ ne contient que : DEVIS CLIENT n° 86 du 20/11/2009 et je dois avoir : DEVIS CLIENT n° 86 du 20/11/2009 il n' y a pas de champs sup? comment faire.

    Merci

  7. #7
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    Essayez :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    WITH MaTable (col) AS
    	(
    			SELECT 'DEVIS CLIENT N° 26 du 06/11/2009 16'
    		UNION ALL
    			SELECT 'DEVIS CLIENT N° 56878 du 06/11/2012'
    	)
    SELECT CASE CHARINDEX(' ', col, LEN(col) - CHARINDEX('/', REVERSE(col)))
    			WHEN 0 THEN col
    			ELSE LEFT(col, LEN(col) - CHARINDEX(' ', REVERSE(col)))
    		END
    FROM MaTable
    La fonction CHARINDEX vous permet de rechercher une chaîne de caractères à partir d'un index (ici celui du slash) dans une chaîne

    Citation Envoyé par Waldar
    J'espère en tout cas que vous comprenez pourquoi le stockage des informations dans une base de données doit être atomique !
    Et je rejoins les propos de Waldar sur ce point : il vous serait plus simple d'ajouter une colonne à votre table et de modifier la procédure stockée d'insertion dans celle-ci pour ne plus avoir à écrire des choses tarabiscotées comme celles-ci

    Citation Envoyé par d.tellier
    Comment rendre la discussion close
    Il y a un bouton Résolu tout en bas du thread

    @++

  8. #8
    Membre confirmé
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Janvier 2003
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 85
    Par défaut Manipulation de chaine
    Bonsoir,
    Merci pour votre réponse.
    Pour la base ce n'est pas la mienne.
    C'est la base de l'ERP de CEGID Business Place.
    J'avait besoin de faire ça pour afficher des info dans un état et enlevé le dernier champ que CEGID concaténe dans une ligne désignation.

    Cordialement.

  9. #9
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Encore un ERP à ajouter à la liste de ceux qui se moquent éperdument des formes normales et fournissent ainsi un produit peu performant facturé très cher ...

    @++

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

Discussions similaires

  1. Convertir des chaines de caratères en chiffres
    Par Mr Hyde dans le forum Général Python
    Réponses: 1
    Dernier message: 06/09/2005, 15h18
  2. newb manipulation chaine de caratère
    Par yodark dans le forum Langage
    Réponses: 6
    Dernier message: 03/09/2005, 20h02
  3. Réponses: 4
    Dernier message: 20/08/2004, 10h59
  4. Réponses: 1
    Dernier message: 08/03/2004, 11h35
  5. Fonctions de manipulation des chaines et des dates
    Par Fares BELHAOUAS dans le forum Débuter
    Réponses: 3
    Dernier message: 09/11/2002, 22h43

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