SQL Server utilise une expression CASE dans une instruction de mise à jour

L'expression CASE est utilisée pour comparer une expression à un ensemble d'expressions en SQL. Le résultat de l'expression CASE est une valeur booléenne, true ou false. Nous pouvons utiliser diverses instructions DML telles que INSERT, SELECT, DELETE et UPDATE avec une instruction CASE. Dans ce tutoriel Tech-Recipes, nous verrons comment utiliser une expression CASE avec des instructions UPDATE.

Nous pouvons commencer par parcourir un exemple.

Commencez par créer une table et nommez-la «employé».

s'il existe (nom SELECT provenant de sys.tables où nom = 'employé') employé de la table de dépôt GO CREATE TABLE employé (empid INT, ename VARCHAR (20), sal INT);


Insérez des exemples de données dans la table des employés.

insérer dans les valeurs des employés (100, 'jon smith', 50000); insérer dans les valeurs des employés (101, «Mike», 2000); insérer dans les valeurs des employés (102, 'ab luther', 70000); insérer dans les valeurs des employés (103, 'vish dalvi', 60000);
sélectionnez * parmi employé; empid ename sal ----------- -------------------- ----------- 100 jon smith 50000 101 Mike 2000 102 ab luther 70000 103 pour dalvi 60000


Nous avons inséré quatre lignes et toutes les lignes sont NON NULL. Ainsi, toutes les lignes ont une valeur valide.

Maintenant, laissez-nous créer une autre table avec empide et sal colonnes comme indiqué dans employé table.

s'il existe (nom SELECT provenant de sys.tables où nom = 'emp') table de dépôt emp GO CREATE TABLE emp (code EmpID INT, sal INT);


Maintenant, insérez quelques exemples de données.

insérer dans emp les valeurs (100, 50000); insérer dans les valeurs emp (101, NULL); insérer dans les valeurs emp (102, NULL); insérer dans les valeurs emp (103, NULL);
sélectionnez * parmi emp; empid sal ----------- ----------- 100 50000 101 NULL 102 NULL 103 NULL

Veuillez noter que nous avons inséré le même empide du employé table dans le emp table, mais le sal colonne est NULL pour trois employés.

Maintenant, nous voulons mettre à jour la table emp et mettre le sal valeur de colonne égale à la sal colonne dans le employé table. Dans la requête suivante, nous devons utiliser une expression CASE avec l'instruction update.

UPDATE emp SET sal = (CAS WHEN e2.sal EST NULL ALORS e1.sal AUTRE e2.sal END) FROM employee e1 INNER JOIN emp e2 ON e1.empid = e2.empid;


Dans la requête ci-dessus, nous vérifions si le e2.sal colonne dans le emp la table est NULL. Si NULL, mettez à jour la valeur avec le sal colonne de la employé table ou bien le garder comme il est dans un autre état.

Maintenant, après la mise à jour, si vous interrogez le emp tableau, vous pouvez voir la valeur de la sal colonne dans le emp table. Cela a NULL valeurs mises à jour avec employé table sal colonne sur la base de correspondance empide des deux tables en utilisant la jointure interne.

sélectionnez * parmi emp; empid sal ----------- ----------- 100 50000 101 2000 102 70000 103 60000