Die SQL CASE-Anweisung ist sehr leistungsfähig und vielseitig. Es kann in SELECT-, UPDATE- und INSERT-Anweisungen verwendet werden. Es kann sogar in ORDER BY- und GROUP BY-Klauseln verwendet werden. Sehen wir sie uns nacheinander an.
Syntax
Sehen Sie sich zuerst die Syntax der CASE-Anweisung an:
CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 ... WHEN conditionN THEN resultN ELSE result END;
Datenvorbereitung
Wählen Sie zuerst Ihre bevorzugte Datenbank und führen Sie die folgenden Abfragen aus, um eine Tabelle „Personen“ zu erstellen und mit Daten zu füllen.
IF OBJECT_ID('Persons', 'U') IS NOT NULL DROP TABLE Persons; GO CREATE TABLE Persons( name varchar(20) ,age int ,sex varchar(2) ) GO INSERT INTO Persons (name,age,sex) values('Bob',5, 'M'); INSERT INTO Persons (name,age,sex) values('Harry',15, 'M'); INSERT INTO Persons (name,age,sex) values('Jasmine',25, 'F'); INSERT INTO Persons (name,age,sex) values('Fanny',65, 'F'); INSERT INTO Persons (name,age,sex) values('Evan',-1, 'N'); GO
SELECT-Anweisung
Lassen Sie es uns in unserer SELECT-Anweisung verwenden.
SELECT Name, age as 'Actual Age', CASE WHEN age >= 0 AND age <= 12 THEN 'CHILD' WHEN age >= 13 AND age <= 19 THEN 'TEEN AGE' WHEN age >= 20 AND age <= 40 THEN 'YOUNG' WHEN age >= 41 AND age <= 60 THEN 'MIDDLE AGE' WHEN age >= 61 THEN 'OLD' ELSE 'NOT DEFINED' END as 'New Age using CASE Stmt', sex as 'Actual Gender', CASE WHEN sex = 'M' THEN 'MALE' WHEN sex = 'F' THEN 'FEMALE' WHEN sex = 'N' THEN 'DONT WANT TO DISCLOSE' END as 'New Gender using CASE Stmt' FROM Persons
Ausgabe
INSERT-Anweisung
DECLARE @age INT DECLARE @sex VARCHAR(10) SET @age = 40 SET @sex = 'MALE' INSERT INTO Persons (Name, Age, Sex) VALUES( 'Jack', CASE WHEN @age < 0 THEN -1 ELSE @age END, CASE WHEN @sex = 'MALE' THEN 'M' WHEN @sex = 'FEMALE' THEN 'F' ELSE 'N' END )
Ausgabe
Wenn wir unsere erste SELECT-Anweisung erneut ausführen, wäre die Ausgabe:
UPDATE-Anweisung
DECLARE @age INT SET @age = -4 UPDATE Persons SET age = CASE WHEN @age < 0 THEN -1 ELSE @age END WHERE Name = 'Bob'
Ausgabe
Wenn wir die obige SELECT-Anweisung erneut ausführen, wäre die Ausgabe:
ORDER BY-Klausel
CASE can be added in ORDER BY clause in above SELECT statement SELECT Name, age as 'Actual Age', CASE WHEN age >= 0 AND age <= 12 THEN 'CHILD' WHEN age >= 13 AND age <= 19 THEN 'TEEN AGE' WHEN age >= 20 AND age <= 40 THEN 'YOUNG' WHEN age >= 41 AND age <= 60 THEN 'MIDDLE AGE' WHEN age >= 61 THEN 'OLD' ELSE 'NOT DEFINED' END as 'New Age using CASE Stmt', sex as 'Actual Gender', CASE WHEN sex = 'M' THEN 'MALE' WHEN sex = 'F' THEN 'FEMALE' WHEN sex = 'N' THEN 'DONT WANT TO DISCLOSE' END as 'New Gender using CASE Stmt' FROM Persons ORDER BY CASE WHEN sex='M' THEN age END, CASE WHEN sex='F' THEN Name END
Ausgabe
GROUP BY-Klausel
Jetzt ist es an der Zeit, CASE in der GROUP BY-Klausel in unserer ersten SELECT-Anweisung zu untersuchen:
SELECT CASE WHEN age <= 40 THEN 'YOUNG' WHEN age >= 41 THEN 'OLD' END as 'New Age using CASE Stmt', COUNT(*) FROM Persons GROUP BY CASE WHEN age <= 40 THEN 'YOUNG' WHEN age >= 41 THEN 'OLD' END
Ausgabe
Wir haben alle Fälle unseres heutigen CASE-Themas behandelt.
Zu Hause bleiben! Bleib gesund!
Es wurde zuerst in meinem Blog veröffentlicht.