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 :

Changement d'une chaine de caracteres d'une colonne sans modification de ce qui se trouve avant ou après cette


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Juillet 2020
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2020
    Messages : 5
    Par défaut Changement d'une chaine de caracteres d'une colonne sans modification de ce qui se trouve avant ou après cette
    Bonjour,
    Je débute en SQL et je rencontre des difficultés pour une requête.
    Je dois mettre à jour une chaîne de caractère de ma colonne MESSAGE dans tous les enregistrements de ma table TEST.
    Cette chaîne de caractères à modifier est la même pour tous les enregistrements.
    il ne faut absolument pas, que ce qui se trouve avant ou après cette chaine, soit modifié. Tout en sachant que tout ce qui se trouve avant et après est différent pour chaque enregistrement de ma colonne.
    J'ai bien essayé un UPDATE avec un REPLACE, mais le REPLACE a pour effet de tout remplacer, ce que je ne veux pas.
    J'utilise SQL Server compact Toolbox for runtine 3.5
    Par avance, merci de votre aide

  2. #2
    Membre Expert Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Par défaut
    Bonjour,
    On peut jouer avec les fonction locate/instr et substring ...
    Maintenant est ce qu'il y peut y avoir plusieurs occurrences de la sous-chaîne à remplacer dans la chaîne initiale ?

    Est-ce que c'est une manip à faire une fois ou régulièrement

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Juillet 2020
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2020
    Messages : 5
    Par défaut
    Bonjour

    Et merci pour votre réponse.
    alors l'idée,était de faire une requête en 1 seule fois car j'ai à peu prés 1000 enregistrements à modifier.
    J'avais essayé une requête avec SUBSTRING pour lui indiquer la position des caractères à modifier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE [TEST] SET MESSAGE = 'Nouvelle_Valeur' + SUBSTRING (MESSAGE, 122, 49)
    WHERE SUBSTRING (MESSAGE, 122, 49) = '%Ancienne_valeur%';
    Mais cela supprime tout ce qu'il y a avant et après.

    La valeur à remplacer est vraiment la même pour les 1000 enregistrements de ma colonne et se trouve à la même position. Et j'ai juste cette valeur à changer.
    Ce qui est différent est ce qui se trouve avant et après cette valeur.

  4. #4
    Membre Expert
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Décembre 2019
    Messages
    1 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Décembre 2019
    Messages : 1 175
    Par défaut
    Bonjour,

    C'est du Oracle ou du SQL Server?
    Dans Oracle REPLACE ou REGEXP_REPLACE peut convenir. Par exemple, si 'chaine_a_remplacer' est unique dans MESSAGE:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE TEST SET MESSAGE = REPLACE(MESSAGE, 'chaine_a_remplacer', 'nouvelle_chaine')
    WHERE INSTR (MESSAGE, 'chaine_a_remplacer') > 0;

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Juillet 2020
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2020
    Messages : 5
    Par défaut
    Merci.
    J'utilise SQL Server Compact Edition.
    J'obtiens cette erreur :
    Message : La fonction n'est pas reconnue par SQL Server Compact Edition. [ Name of function = INSTR,Data type (if known) = ]
    Minor Err.: 25921
    Source : SQL Server Compact ADO.NET Data Provider
    Err. Par. : INSTR

  6. #6
    Membre Expert Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Par défaut
    In Oracle, INSTR function returns the position of a substring in a string, and allows you to specify the start position and which occurrence to find.

    In SQL Server, you can use CHARINDEX function that allows you to specify the start position, but not the occurrence, or you can use a user-defined function.
    Essayer charindex ...

Discussions similaires

  1. Réponses: 0
    Dernier message: 01/07/2013, 00h30
  2. Réponses: 2
    Dernier message: 26/11/2008, 15h37
  3. [VBA-E] Suppression du contenu d'une colonne sans perdre ses formules
    Par mardona dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 21/04/2007, 09h08
  4. Récupérer valeurs d'une colonne sans doublons
    Par paflolo dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 17/10/2006, 14h19
  5. Réponses: 4
    Dernier message: 10/06/2006, 00h38

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