SQL Server Verwenden Sie einen CASE-Ausdruck in einer Aktualisierungsanweisung

Der CASE-Ausdruck wird verwendet, um einen Ausdruck mit einer Menge von Ausdrücken in SQL zu vergleichen. Das Ergebnis des CASE-Ausdrucks ist ein boolescher Wert, true oder false. Wir können verschiedene DML-Anweisungen wie INSERT, SELECT, DELETE und UPDATE mit einer CASE-Anweisung verwenden. In diesem Tech-Recipes-Lernprogramm erfahren Sie, wie Sie einen CASE-Ausdruck mit UPDATE-Anweisungen verwenden.

Wir können mit einem Beispiel beginnen.

Erstellen Sie zunächst eine Tabelle und nennen Sie sie "Mitarbeiter".

falls vorhanden (SELECT-Name aus sys.tables, wobei name = 'employee') drop table employee GO CREATE TABLE-Mitarbeiter (empid INT, ename VARCHAR (20), sal INT);


Fügen Sie einige Beispieldaten in die Employee-Tabelle ein.

Einfügen in Mitarbeiterwerte (100, 'Jon Smith', 50000); in Mitarbeiterwerte einfügen (101, 'mike', 2000); Einfügen in die Mitarbeiterwerte (102, "ab luther", 70000); in Mitarbeiterwerte einfügen (103, 'vish dalvi', 60000);
* vom Mitarbeiter auswählen; empid ename sal ----------- -------------------- ----------- 100 jon smith 50000 101 mike 2000 102 nach 70000 103 vish dalvi 60000


Wir haben vier Zeilen eingefügt und alle Zeilen sind NON NULL. Daher haben alle Zeilen einen gültigen Wert.

Lassen Sie uns nun eine weitere Tabelle mit erstellen Empid und sal Spalten wie in aufgeführt Mitarbeiter Tabelle.

Wenn vorhanden (SELECT-Name aus sys.tables, wobei name = 'emp' gilt) drop table emp GO CREATE TABLE emp (empid INT, sal INT);


Fügen Sie nun einige Beispieldaten ein.

Einfügen in emp-Werte (100, 50000); Einfügen in emp-Werte (101, NULL); Einfügen in emp-Werte (102, NULL); Einfügen in emp-Werte (103, NULL);
wähle * aus emp; empid sal ----------- ----------- 100 50000 101 NULL 102 NULL 103 NULL

Bitte beachten Sie, dass wir dasselbe eingefügt haben Empid von dem Mitarbeiter Tisch in der emp Tisch, aber die sal Spalte ist NULL für drei Mitarbeiter.

Nun wollen wir die Tabelle aktualisieren emp und setze das sal Spaltenwert gleich dem sal Spalte in der Mitarbeiter Tabelle. In der folgenden Abfrage müssen wir einen CASE-Ausdruck mit der Aktualisierungsanweisung verwenden.

UPDATE emp SET sal = (CASE WENN e2.sal NULL DANN e1.sal ELSE e2.sal ENDE ist) VOM Mitarbeiter e1 INNER JOIN emp e2 AUF e1.empid = e2.empid;


In der obigen Abfrage prüfen wir, ob die e2.sal Spalte in der emp Tabelle ist NULL. Wenn es NULL ist, aktualisieren Sie den Wert mit der sal Spalte der Mitarbeiter Tisch oder halten Sie es in einem anderen Zustand.

Nun, nach dem Update, wenn Sie die emp Tabelle sehen Sie den Wert für die sal Spalte in der emp Tabelle. Dies hat NULL-Werte mit aktualisiert Mitarbeiter Tabelle sal Spalte auf der Grundlage der Übereinstimmung Empid von beiden Tabellen mit innerem Join.

wähle * aus emp; empid sal ----------- ----------- 100 50000 101 2000 102 70000 103 60000