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

Développement SQL Server Discussion :

Tronquer des données à partir d'un type de caractère


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté

    Homme Profil pro
    S'occupe de tout.
    Inscrit en
    Février 2004
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : S'occupe de tout.
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2004
    Messages : 209
    Par défaut Tronquer des données à partir d'un type de caractère
    Bonjour,

    Je suis sous SQL SERVER 2000.
    J'effectue un SELECT qui me retourne une chaîne de caractère.
    Dans cette chaîne, il y a un ".
    J'aimerais pouvoir tronquer mon résultat à partir de ce ", sachant qu'il n'est pas positionner au même endroit dans chaque enregistrement.

    Un petit exemple, valant mieux qu'un long discours.
    Je fais un SELECT * from toto

    Et je récupère :

    ttttttttttt"aaaa
    bbbbbb"vvvv
    rrrrrrrrrrrrrrrrr"ttttt
    et je ne voudrais avoir que

    ttttttttttt
    bbbbbb
    rrrrrrrrrrrrrrrrr
    Merci d'avance pour votre aide.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Question basique : utilise les fonctions charindex et substring.
    cf : http://msdn.microsoft.com/en-us/libr...sql.90%29.aspx

  3. #3
    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,

    Citation Envoyé par 7gyY9w1ZY6ySRgPeaefZ
    Question basique : utilise les fonctions charindex et substring.
    Basique pour vous, mais pas pour tout le monde. Aidons les débutants

    Un petit bout de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    DECLARE @exemple TABLE
    (
    	uneChaine varchar(30)
    )
     
    INSERT	INTO @exemple VALUES ('ttttttttttt"aaaa')
    INSERT	INTO @exemple VALUES ('bbbbbb"vvvv')
    INSERT	INTO @exemple VALUES ('rrrrrrrrrrrrrrrrr"ttttt')
     
    SELECT	LEFT(uneChaine, CHARINDEX('"', uneChaine) - 1)
    FROM	@exemple
    La fonction CHARINDEX vous donne la position d'un caractère ou d'une chaîne de caractères dans une autre chaîne de caractères.
    Par extension, vous pouvez utiliser PATINDEX.

    La fonction LEFT extrait la partie gauche d'une chaîne pour un certain nombre de caractères.

    La fonction RIGHT, c'est la même chose, mais à partir de la droite.
    Donc si on avait voulu extraire la partie droite de la chaîne après les guillemets, on aurait du écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    DECLARE @exemple TABLE
    (
    	uneChaine varchar(30)
    )
     
    INSERT	INTO @exemple VALUES ('ttttttttttt"aaaa')
    INSERT	INTO @exemple VALUES ('bbbbbb"vvvv')
    INSERT	INTO @exemple VALUES ('rrrrrrrrrrrrrrrrr"ttttt')
     
    SELECT	RIGHT(uneChaine, LEN(uneChaine) - CHARINDEX('"', uneChaine))
    FROM	@exemple
    Mais on peut aussi utiliser REVERSE :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    DECLARE @exemple TABLE
    (
    	uneChaine varchar(30)
    )
     
    INSERT	INTO @exemple VALUES ('ttttttttttt"aaaa')
    INSERT	INTO @exemple VALUES ('bbbbbb"vvvv')
    INSERT	INTO @exemple VALUES ('rrrrrrrrrrrrrrrrr"ttttt')
     
    SELECT	RIGHT(uneChaine, CHARINDEX('"', REVERSE(uneChaine)) - 1)
    FROM	@exemple
    Enfin SUBSTRING vous permet d'extraire une sous-chaîne d'une chaîne à partir d'une certaine position dans la chaîne, et sur une certaine longueur

    Vous le voyez donc, lire la documentation est capital, et c'est le message que 7gyY9w1ZY6ySRgPeaefZ veut vous faire passer.
    Vous pouvez mettre le lien de la documentation de SQL Server 2000 dans ma signature dans votre marque page, ou encore télécharger la documentation de la même façon

    @++

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par elsuket Voir le message
    Basique pour vous, mais pas pour tout le monde. Aidons les débutants
    J'ai donné toutes les briques pour faire la job.
    Il reste que c'est le genre de problème que l'on rencontre rapidement sur n'importe quel langage et souvent dès la formation.
    La solution est toujours la même, on recherche comment s'appelle les fonctions par défaut et on bidouille un peu autour : 15 minutes.
    Après, on peut proposer du pur bachotage en prenant par la main mais je ne trouve pas l'approche formatrice sur un forum dédié justement aux professionnels de l'informatique, personnes qui seront amené à consulter de la doc très régulièrement.
    "Autant apprendre à pêcher plutôt que de donner du poisson" comme disait le sage Islandais Björn Borgenstormidurir.

    Cela dit ma réponse était rapide mais ne se voulait pas pour autant méprisante...

  5. #5
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 202
    Par défaut
    je plussoie totalement 7gyY9w1ZY6ySRgPeaefZ (ca ferait un bon mot de passe !)

    le règlement du forum précise d'ailleurs que nous sommes sur un forum pro et que les débutants doivent potasser un minimum
    substring et autres ce sont les bases de l’algorithmie, si tout le monde vient poser ce genre de question on va vite s'ennuyer ...

    de plus il a donné les 2 fonctions utiles, à partir de là la réponse est totalement suffisante, google faisant le reste ca ne sert pas à grand chose de retaper ce qui est écrit sur msdn ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    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
    Je suis d'accord avec vous sur le fait que maldufleur n'a pas l'air d'avoir cherché ... mais ce n'est peut-être pas le cas.

    On a tous été débutants, et quand j'ai commencé sous SQL Server, je ne connaissais que l'implémentation SQL d'Oracle que l'on m'a appris à l'IUT, donc j'ai galéré, et j'ai bien été content de trouver les réponses à mes questions sur ce forum.

    Force est de constater aussi que la documentation de SQL Server est parfois pauvre en exemples : il suffit de regarder ce qui est donné pour la fonction FORMAT() de SQL Server 2012, et ce que l'on peut faire avec ...

    Parmi les exemples que j'ai donnés, je ne crois pas avoir copié MSDN ...
    Peut-être que maldufleur est venu chercher sur le forum quelque chose de plus complet en termes d'exemples ...

  7. #7
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Par défaut
    Citation Envoyé par elsuket Voir le message
    Bonjour,
    Basique pour vous, mais pas pour tout le monde. Aidons les débutants
    @++
    +1, mon cher ami ! Nous sommes un club d'ami.

    Découvrez la FAQ de MS SQL Server.
    La chance accorde ses faveurs aux esprits avertis !

  8. #8
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par WOLO Laurent Voir le message
    +1, mon cher ami ! Nous sommes un club d'ami.
    Non, c'est un club de professionnels, c'est écrit en clair en haut à gauche !

  9. #9
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Par défaut
    Et dis-moi si des professionnels ne peuvent pas etre des amis ou s'il ne peuvent pas s'entraider ?
    Veux-tu creer un troollllllllllllllllllllllll !
    Il faut que tu integres l'espris de partage....C'est ca un forum de discussion.

    Découvrez la FAQ de MS SQL Server.
    La chance accorde ses faveurs aux esprits avertis !

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

Discussions similaires

  1. Filtrer des données à partir d'un champ type
    Par maftour dans le forum Access
    Réponses: 7
    Dernier message: 12/05/2015, 13h48
  2. récuperer des données à partir d'un fichier écrit en HTML
    Par moabomotal dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 01/11/2006, 19h50
  3. Réponses: 8
    Dernier message: 22/08/2006, 12h51
  4. [SQLCE 2000] Importer des données à partir de fichiers
    Par Friz dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 10/03/2006, 19h39
  5. Réponses: 2
    Dernier message: 22/11/2005, 22h09

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