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

Administration SQL Server Discussion :

update des premiers caractères d'un champ code


Sujet :

Administration SQL Server

  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2012
    Messages : 1
    Par défaut update des premiers caractères d'un champ code
    salut

    j'ai une table article, et je voudrai remplacer les 4 premiers caractères 2202 par 2205 dans la colonne code_art.

    J'ai essayé plusieurs requêtes, mais ça ne marche pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE TABLE
    set Champ '2205' right (champ,4,8) 
    where champ  like '%2202%'

  2. #2
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2007
    Messages : 89
    Par défaut
    Bonjour, l'icone '#' sert à baliser le code, c'est plus pratique

    Une syntaxe correcte serait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    UPDATE TABLE
    set code_art = '2205' + right(code_art,4) 
    where left(codeart, 4) = '2202'
    AND LEN(code_art) = 8 --sait-on jamais...
    Accessoirement, s'agissant d'une table article, il serait surprenant qu'aucune contrainte de clé ne s'applique, ce qui me fait supposer que la modification ne sera toujours pas possible...

    Bonne journée

  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,

    En plus, si c'est la clé primaire, il faudra changer toutes les valeurs de clé étrangères ...

    @++

  4. #4
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2007
    Messages : 89
    Par défaut
    Comme j'ai un peu de temps pendant ma mise à jour...

    Il faudrait au moins commencer par une insertion des nouveaux articles, et avec un peu de chance des UPDATE sur les tables dépendantes pourraient suffire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    INSERT INTO TABLE(code_art, col2, ..., coln)
    SELECT '2205' + RIGHT(code_art,4), col2, ..., coln FROM TABLE
    WHERE LEFT(codeart, 4) = '2202'
    AND LEN(code_art) = 8
    Et ensuite reprendre l'update initial et l'appliquer sur toutes les tables contenant le code article, en espérant qu'aucune contrainte ne vienne gêner ces mises à jour.

    En dernier recours, et sur une base de test, le script de Fred sur les contraintes pourrait aider :


    Bonne journée

  5. #5
    Membre éprouvé

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 448
    Par défaut
    Utilisez REPLACE


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE TABLE
    SET Champ = REPLACE(Champ, '2202', '2205') 
    WHERE champ  LIKE '2202%'

  6. #6
    Membre Expert
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Par défaut
    Citation Envoyé par Sergejack Voir le message
    Utilisez REPLACE


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE TABLE
    SET Champ = REPLACE(Champ, '2202', '2205') 
    WHERE champ  LIKE '2202%'
    Mieux vaut ne pas utiliser REPLACE dans ce contexte !
    Parce que la référence 22022202 serait transformée en 22052205, ce qui ne correspond pas au besoin ... Les suggestions de OokieDookie91 semblent pertinentes.

  7. #7
    Membre éprouvé

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 448
    Par défaut
    Vous avez raison sur le cas d'exception mais REPLACE reste efface.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    UPDATE TABLE
    SET Champ = REPLACE('_' + Champ, '_2202', '2205') 
    WHERE champ  LIKE '2202%'
    Voilà un query qui évite de se soucier de la taille du code.
    NB: ce query suppose qu'il n'y jamais '_2202' au "milieur" de vos codes.

Discussions similaires

  1. Réponses: 3
    Dernier message: 09/05/2007, 11h39
  2. [Oracle 8i] Count des premiers caractères
    Par stoz dans le forum Langage SQL
    Réponses: 8
    Dernier message: 09/01/2007, 16h34
  3. afficher les n premiers caractères d'un champs
    Par kabool dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 08/03/2006, 18h22
  4. Selection des x premiers caractères dans un champ précis
    Par Schulman dans le forum Langage SQL
    Réponses: 2
    Dernier message: 12/01/2005, 09h23
  5. Réponses: 2
    Dernier message: 04/09/2004, 10h53

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