Câu lệnh SQL CASE rất mạnh mẽ và linh hoạt. Nó có thể được sử dụng trong câu lệnh SELECT, UPDATE và INSERT. Thậm chí nó có thể được sử dụng trong mệnh đề ORDER BY và GROUP BY. Hãy kiểm tra từng cái một.
Cú pháp
Trước tiên, hãy kiểm tra cú pháp của câu lệnh CASE:
CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 ... WHEN conditionN THEN resultN ELSE result END;
Chuẩn bị dữ liệu
Đầu tiên, chọn cơ sở dữ liệu ưa thích của bạn và chạy các truy vấn bên dưới để tạo bảng “Người” và điền dữ liệu.
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
Tuyên bố CHỌN
Hãy sử dụng nó trong câu lệnh SELECT của chúng tôi.
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
Đầu ra
Tuyên bố CHÈN
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 )
Đầu ra
Nếu chúng ta chạy lại câu lệnh SELECT đầu tiên, thì kết quả đầu ra sẽ là:
Tuyên bố CẬP NHẬT
DECLARE @age INT SET @age = -4 UPDATE Persons SET age = CASE WHEN @age < 0 THEN -1 ELSE @age END WHERE Name = 'Bob'
Đầu ra
Nếu chúng ta chạy lại câu lệnh SELECT ở trên, thì kết quả đầu ra sẽ là:
ĐẶT HÀNG THEO Mệnh đề
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
Đầu ra
Mệnh đề GROUP BY
Giờ là lúc khám phá mệnh đề CASE trong GROUP BY trong câu lệnh SELECT đầu tiên của chúng ta:
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
Đầu ra
Chúng tôi đã đề cập đến tất cả các trường hợp trong chủ đề CASE của ngày hôm nay.
Ở nhà! Giữ an toàn!
Nó được xuất bản lần đầu tiên trên blog của tôi.