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 :

Modifier les 3 premiers chiffres dans tous les champs "NuméroDossier" d'une base "XYZ_ABC"


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2012
    Messages : 30
    Par défaut Modifier les 3 premiers chiffres dans tous les champs "NuméroDossier" d'une base "XYZ_ABC"
    Bonjour à tous

    J'ai besoin de construire une requête SQL pour SQL-Server qui cherche dans une base de donnée (XXXX_AAA-BBBB) toutes les tables dans lesquelles se trouve le champs "NuméroDossier" pour ensuite remplacer tous les numéros de dossier (toutes les valeurs du champs) par le même chiffre avec les 3 premiers chiffres modifié selon mes besoins.

    Example :
    Base: XXXX_AAA-BBBB
    Toutes les tables: dbo.a, dbo.b, dbo.c, etc...
    Champ: "NuméroDossier"

    Valeurs a modifier: 100000008 => 489000008 .

    J'ai 5 Bases a modifier, donc je peux avoir deux variables, une pour la base et une autre pour les 3 chiffres a modifier dans le champs en question puisque je dois boucler sur toutes les tables.

    Je n'aurais ainsi qu'a modifier le nom de la base et les chiffres de 3 caractères a remplacer au début de la valeur.

    Example:

    chiffre: 489
    100000008 => 489000008

    chiffre: 456
    100000008 => 456000008

    chiffre: 123
    100000008 => 123000008


    etc...

    Pouvez-vous me pointer vers la bonne direction, éventuellement me faciliter la tâche avec un example de script (pardon).

    C'est urgent.

    Merci

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    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 136
    Par défaut
    La modification ne peut se faire en une seule requête puisqu'il s'agit de modifier le contenu de plusieurs tables.
    Il faut en fait exécuter une requête pour chacune des tables à mettre à jour.
    Toutefois, cette opération peut être effectuée avec une procédure et du SQL dynamique (requête construite par le programme).

    Sur le principe, il faut :
    • Identifier les tables dans lesquelles existe la colonne recherchée
    • Pour chacune de ces tables
      • Préparer le texte de la requête qui effectuera la mise à jour
      • Exécuter la requête ainsi préparée
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2012
    Messages : 30
    Par défaut
    J’suis développeur, je connais les bases de la logique. ;D
    Quelqu'un a-t-il un Example de code SQL s’il vous plait ?

    Merci

  4. #4
    Membre habitué
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Décembre 2020
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2020
    Messages : 11
    Par défaut Génération de code SQL
    Bonjour,
    Vous pouvez générer de code SQL dynamiquement via les tables système.
    Exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    select 'Update ' + table_name +
    	' Set [NuméroDossier] = ''489'' + Substring([NuméroDossier],4,6) '  as SqlCmd
    from INFORMATION_SCHEMA.COLUMNS 
    where TABLE_NAME like '%'
    	and COLUMN_NAME like 'NuméroDossier'
    Ensuite, vous executez le code dans SSMS
    en espérant que ca vous mette sur la piste.
    Daniel

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2012
    Messages : 30
    Par défaut
    Merci Merci Merci

  6. #6
    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
    Ca dépend également du type de données des colonnes NumDossier.
    Si c'est un entier le plus rapide sera de faire des opérations arithmétiques : select 100000008 + (489 - 100) * 1000000;

Discussions similaires

  1. Réponses: 7
    Dernier message: 18/06/2019, 16h24
  2. [PostgreSQL] Modifier les champs dans la bdd postgresql avec php
    Par zohit dans le forum PHP & Base de données
    Réponses: 14
    Dernier message: 29/09/2014, 13h33
  3. [TCD] Modifier les champs d'un TCD
    Par Commodore dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 26/06/2007, 17h11
  4. [VBA-E] Modifier les propriétés d'un control par une routine
    Par formath dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 04/03/2007, 10h45
  5. modifier les champs d'une table
    Par zidenne dans le forum Bases de données
    Réponses: 1
    Dernier message: 27/10/2005, 15h22

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