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 chaîne selon condition


Sujet :

Développement SQL Server

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 60
    Points : 41
    Points
    41
    Par défaut Tronquer chaîne selon condition
    Bonjour,

    Je dois remplir un champ commentaire (254 c) à partir d'un champ Libellé (4000 c).
    Donc si le champ Libellé est <= 254 c, je copie directement dans le champ commentaire.
    Sinon je dois prendre un bout du champ libellé.
    Le problème est que je veux avoir un bout de chaque phrase. Donc je veux chercher chaque point (.) et prendre disant 50 c à gauche.

    Est-ce que c'est possible de faire cette requête ?
    J'espère que le problème est claire.

    Merci d'avance,

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    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 108
    Points : 28 416
    Points
    28 416
    Par défaut
    Qu'as-tu déjà essayé de faire comme requête ?
    Quel problème rencontres-tu ?

  3. #3
    Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 60
    Points : 41
    Points
    41
    Par défaut
    Pour l'instant j'essaie d'avoir la chaîne avant de faire l'Update.
    J'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT LEFT(SCO_NM_DUTYENG,CHARINDEX('.',REVERSE(SCO_NM_DUTYENG),0)-1) from SCO_DUTIES
    Mais pour l'instant rien.
    Merci.

  4. #4
    Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 60
    Points : 41
    Points
    41
    Par défaut
    Bonjour,

    Je viens de comprendre l'utilité du Reverse() bon un peu en retard. Donc c'est pas la bonne fonction à utiliser.
    Est-ce qu'il y a quelqu'un qui pourra m'aider à écrire une procédure qui répond à mon besoin ?

    Merci d'avance.

  5. #5
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    fournissez un jeu d'essai sous forme de CREATE TABLE + INSERT INTO ... ainsi que le résultat attendu, ce sera plus facile et efficace pour vous aider

  6. #6
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 101
    Points : 187
    Points
    187
    Par défaut
    Bonjour,

    Cette fonction bien qu'elle ne soit pas optimum en terme de rapidité devrait faire le job.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    CREATE FUNCTION [dbo].[ufn_Split50] 
    ( 
       @DelimittedString [varchar](max), 
       @Delimiter [varchar](1) 
    ) 
     
    RETURNS varchar(254)
     
    BEGIN 
        DECLARE @sComment  [varchar](254)
    	SET @sComment = ''
     
       DECLARE @sTemp [varchar](max) 
       SET @sTemp = ISNULL(@DelimittedString,'') 
                    + @Delimiter 
       WHILE LEN(@sTemp) > 0 
       BEGIN 
     
    	  -- Limite le resultat a 50 car / par ligne avec Separateur ligne50 = '...'
          Set @sComment = @sComment + 
    	              Substring( 
    	                 SubString(@sTemp,1,CharIndex(@Delimiter,@sTemp)-1)
    		     	 ,1, 50) + '...'
     
          SET @sTemp = RIGHT(@sTemp,
            LEN(@sTemp)-CharIndex(@Delimiter,@sTemp)) 
     
       END 
      RETURN  @sComment
    END

    Bonne journée.

  7. #7
    Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 60
    Points : 41
    Points
    41
    Par défaut
    Bonjour,

    Je suis entrain de faire les tests.
    Merci beaucoup.

    Je reviendrai vers vous avec le résultat.

  8. #8
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    Pourquoi dupliquer les données dans la colonne commentaire? pourquoi ne pas le gérer à l'affichage côté client? (voir même avec une vue?)

Discussions similaires

  1. [RAVE] champs selon conditions
    Par missmarion dans le forum Bases de données
    Réponses: 4
    Dernier message: 17/03/2006, 16h20
  2. [HTML][CSS] Redimensionner une image selon condition
    Par Eilkh dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 14/02/2006, 15h55
  3. [VB.net] Générer une date selon condition
    Par WriteLN dans le forum Windows Forms
    Réponses: 2
    Dernier message: 20/10/2005, 16h12
  4. [VB.NET] Changer de classe selon condition
    Par daner06 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 24/10/2004, 10h04
  5. DLLs chargées selon condition
    Par Benjamin GAGNEUX dans le forum API, COM et SDKs
    Réponses: 9
    Dernier message: 12/08/2004, 18h14

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