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 :

Update avec inversion de valeur


Sujet :

Développement SQL Server

  1. #1
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut Update avec inversion de valeur
    Bonjour

    Existe-il une astuce en SQL ou Sql Serveur pour faire un update avec condition sur valeur

    Exemple :
    Dans une table de fruits je voudrais modifier la colonne Nom
    - Toutes le pommes vont s'appeler poire
    - Toutes les poires vont s'appeller pommes


    Une maniere simple serait d'ecrire un truc du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE Fruits
    SET Nom='Pomme' WHERE Nom='Poire',
    SET Nom='Poire' WHERE Nom='Pomme'
    Bien entendu cette syntaxe est un Pseudo-Code et ne peut maheureusement pas etre appliquée
    Donc pour resoudre un cas de ce genre il faut faire des jongleries invraissemblables


    Auriez vous des suggestion pour resoudre un pareil cas de maniere +/- élégante !

    Merci de votre aide

  2. #2
    Membre Expert

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2003
    Messages : 733
    Billets dans le blog
    8
    Par défaut
    Citation Envoyé par olibara Voir le message
    Auriez vous des suggestion pour resoudre un pareil cas de maniere +/- élégante !
    Elégante je ne sais pas, mais généralement, pour faire de type de traitement (demande assez fréquente) on utilise la technique suivante :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    UPDATE dbo.Fruits 
       SET Nom = CASE 
                            WHEN Nom = 'Pomme' THEN 'Poire' 
                            WHEN Nom = 'Poire' THEN 'Pomme' 
    			ELSE Nom 
                          END
    Remarque :
    Une des règles de bonne pratique concernant l'utilisation du CASE consiste à "fermer" systématiquement par un ELSE final, et ce, afin d'être sûr et certain de couvrir l'ensemble du domaine (dans le notre exemple, il s'agit du domaine constitué par le type de de la colonne Nom de la table Fruits), ce qui se traduit dans notre cas par le fait que les colonnes dont la valeurs est différentes de Pomme ou Poire, garderont leur anciennes valeurs (Exemple Raisin) )
    Le ELSE de fermeture du domaine a aussi pour rôle de faire en sorte que le type de l'expression T-SQL CASE soit déterministe et non pas hasardeux !

    A+

  3. #3
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    Merci Hmira

    Bon sang mais c'est bien sur !
    J'avais completement zappé l'idée du CASE WHEN pour un Update !

    Merci de me le rappeller

Discussions similaires

  1. [TOS 5.2.1] Update avec cumul de valeur
    Par Cogito.11 dans le forum Développement de jobs
    Réponses: 1
    Dernier message: 22/04/2014, 17h10
  2. update avec une autre valeur
    Par flash22 dans le forum Développement de jobs
    Réponses: 3
    Dernier message: 20/04/2011, 15h02
  3. UPDATE avec une valeur MAX
    Par Bobtop dans le forum Requêtes
    Réponses: 5
    Dernier message: 10/06/2006, 13h08
  4. [PostGreSLQ] pb d'UPDATE avec valeur NULL
    Par mellie dans le forum Langage SQL
    Réponses: 3
    Dernier message: 06/03/2006, 11h03
  5. syntaxe "UPDATE" (lecture d'une valeur avec jointu
    Par mrblue1978 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 23/01/2006, 15h38

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