SQL Server Comment permuter les valeurs entre deux colonnes

Lorsque vous travaillez avec des bases de données, le déplacement et l'échange de valeurs entre les colonnes est une tâche courante.

Souvent, lors de la construction et de l'administration de ma base de données, les erreurs de configuration et de codage peuvent être corrigées en échangeant simplement les valeurs entre deux colonnes différentes.

Commençons par créer la table 'employés'.

s'il existe (nom SELECT provenant de sys.tables où nom = 'employés') employés de la table de suppression GO Employés de la table CREATE (empid int, nom fc varchar (20), nom lcvchar (20), deptno int);


Insérons quelques exemples de données dans la table.

INSÉRER en VALEURS pour les employés (100, 'smith', 'jon', 10); INSCRIRE dans les VALEURS des employés (101, 'novak', 'tim', 10); INSCRIRE dans les VALEURS des employés (102, 'benk', 'mark', 10); INSCRIRE dans les VALEURS des employés (103, 'jobs', 'steve', 10); INSCRIRE dans les VALEURS des employés (104, 'alex', 'gravell', 20);


Supposons que nous ayons accidentellement inséré prénom en tant que nom de famille et inversement pour le département 10. Pour corriger cela, nous devons échanger les valeurs prénom et nom de ce département.

Dans la table des employés, firstname = 'smith' et lastname = "jon", nous devons échanger ces valeurs pour que la table mise à jour ait firstname = "jon" et lastname = "smith", ainsi que pour tous les employés du département 10.

La requête ci-dessous mettra à jour la table des employés en échangeant les valeurs pour fname et lname.

SELECT * parmi les employés; Allez DÉCLARER @ temp comme varchar (20) mettre à jour les employés set @temp = fname, fname = lname, lname = @temp WHERE deptno = 10; GO SELECT * des employés;

Permuter les valeurs entre deux colonnes


La logique de la requête de mise à jour est identique à celle utilisée dans d'autres langages de programmation. Nous stockons les valeurs qui vont être écrasées dans une variable temporaire, puis nous réécrivons la variable temporaire à la position correcte.