Hàm CASE trong SQL Server (phần 1)
Số trang: 5
Loại file: pdf
Dung lượng: 112.08 KB
Lượt xem: 10
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Tham khảo tài liệu 'hàm case trong sql server (phần 1)', công nghệ thông tin, cơ sở dữ liệu phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả
Nội dung trích xuất từ tài liệu:
Hàm CASE trong SQL Server (phần 1) Hàm CASE trong SQL Server (phần 1) Trong SQL Sever, hàm CASE kiểm định giá trị dựa tr ên danh sách điều kiện đưa ra, sau đó trả về một hoặc nhiều kết quả. Ở bài này chúng tôi sẽ minh hoạ một số cách dùng khác nhau c ủa hàm này trong những trường hợp khác nhau. Phương thức 1: Cách dùng hàm CASE đơn giản Đây là cách dùng phổ biến nhất của hàm case, trong đó bạn có thể tạo giá trị vô hướng dựa trên danh sách điều kiện đưa ra. Giả sử chúng ta có bảng sau với các cột id (m ã số nhân viên), [First name] (tên), [Last name] (họ) và gender (giới tính). Bây giờ, chúng ta muốn tạo thêm tiền tố (Mr, Ms) ở phía tr ước từng tên, dựa trên giá trị của cột Gender, thực hiện như sau: use tempdb go if exists (select * from dbo.sysobjects where id = object_id(N'[emp]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [emp] GO create table Emp (id int, [First name] varchar(50), [Last name] varchar(50), gender char(1)) go insert into Emp (id,[First name],[Last name], gender ) values (1,'John','Smith','m') insert into Em p (id,[First name],[Last name], gender ) values (2,'James','Bond','m') insert into Emp (id,[First name],[Last name], gender ) values (3,'Alexa','Mantena','f') insert into Emp (id,[First name],[Last name], gender ) values (4,'Shui','Qui','f') insert into Emp (id,[First name],[Last name], gender ) values (5,'William','Hsu','m') insert into Emp (id,[First name],[Last name], gender ) values (6,'Danielle','Stewart','F') insert into Emp (id,[First name],[Last name], gender ) values (7,'Martha','Mcgrat h','F') insert into Emp (id,[First name],[Last name], gender ) values (8,'Henry','Fayol','m') insert into Emp (id,[First name],[Last name], gender ) values (9,'Dick','Watson','m') insert into Emp (id,[First name],[Last name], gender ) values (10,'Helen','Foster','F') go Bây giờ, tạo cột [Full name] (họ t ên đầy đủ) để xác định nên đặt tiền tố l à “Mr.” hay “Ms.”, dựa vào giá trị trên cột Gender. Select [id],[Full Name] = case Gender when 'm' then 'Mr. '+[First name]+ ' '+[Last name] when 'f' then 'Ms. '+[First name]+ ' '+[Last name] end from Emp Thủ tục này trả về kết quả như hình bên dưới: id Full Name ----------- ---------------- 1 Mr. John Smith 2 Mr. James Bond 3 Ms. Alexa Mantena 4 Ms. Shui Qui 5 Mr. William Hsu 6 Ms. Danielle Stewart 7 Ms. Martha Mcgrath 8 Mr. Henry Fayol 9 Mr. Dick Watson 10 Ms. Helen Foster Phương thức 2: Sử dụng hàm case đơn giản với mệnh đề ELSE Nếu thêm một hàng với giá trị NULL vào cột gender, bạn sẽ không thấy có tên nào được trả về trong tập hợp kết quả. Chèn hàng sau vào bảng emp: use tempdb go insert into Emp (id,[First name],[Last name], gender ) values (11,'Tom','Gabe',NULL) go Bây giờ tạo cột [Full name] để xác định tiền tố đặt tr ước mỗi tên là “Mr.” hay “Ms.”, dựa trên giá trị lấy ở cột Gender: Select [id],[Full Name] = case Gender when 'm' then 'Mr. '+[First name]+ ' '+[Last name] when 'f' then 'Ms. '+[First name]+ ' '+[Last name] end from Emp Kết quả trả về như sau: id Full Name ----------- ------------------------ 1 Mr. John Smith 2 Mr. James Bond 3 Ms. Alexa Mantena 4 Ms. Shui Qui 5 Mr. William Hsu 6 Ms. Danielle Stewart 7 Ms. Martha Mcgrath 8 Mr. Henry Fayol 9 Mr. Dick Watson 10 Ms. Helen Foster 11 NULL Tuy nhiên, chúng ta cần hiển thị Full Name (họ tên đầy đủ) của nhân viên, kể cả trong trường hợp không có giá trị tr ên Gender. Để thực hiện điều này, bạn cần dùng hàm CASE với mệnh đề ELSE. Thực hiện truy vấn như sau: Select [id],[Full Name] = case Gender when 'm' then 'Mr. '+[First name]+ ' '+[Last name] when 'f' then 'Mz. '+[First name]+ ' '+[Last name] else [First name]+ ' '+[Last name] end from Emp Kết quả trả về như sau: id Full Name ----------- ---------------------- 1 Mr. John Smith 2 Mr. James Bond 3 Mz. Alexa Mantena 4 Mz. Shui Qui 5 Mr. William Hsu 6 Mz. Danielle Stewart 7 Mz. Martha Mcgrath 8 Mr. Henry Fayol 9 Mr. Dick Watson 10 Mz. Helen Foster 11 Tom Gabe Phương thức 3: Sử dụng hàm CASE khi có hai hoặc nhiều điều kiện trong danh sách Trong hai ví dụ trên, bạn thấy rằng các điều kiện đ ược xét đến hoặc là Male, Female, hay None. Tuy nhiên, trong nhiều trường hợp bạn sẽ cần sử dụng nhiều điều kiện, nhiều toán tử cùng lúc để trả về một giá trị. Thêm cột [Marital Status] (tình trạng hôn nhân) vào bảng và update giá trị như bên dưới: use tempdb go alter table Emp add [Marital Status] char(1) -- S-Single M-Married go Update Emp set [Marital Status]='S' where id in (1,5,8) Update Emp set [Marital Status]='M' where [Marital Status] is NULL Go Giả sử chúng ta muốn hiển thị tên nhân viên có tiền tố đứng trước giúp dễ dàng xác định tình trạng hôn nhân của họ. Thực hiện truy vấn nh ư sau: Select [id],[Full Name] = case when Gender ='m' and [marital status] ='S' then 'MR. '+[First name]+ ' '+[Last name] when Gender ='m' and [marital status] ='M' then 'Mr. '+[First name]+ ' '+[Last name] when Gender ='f' and [marital status] ='S' then 'Ms. '+[First name]+ ' '+[Last name] when Gender ='f' and [marital status] ='M' then 'Mrs. '+[First name]+ ' '+[Last name] else [First name]+ ' '+[Last name] end from Emp Kết quả được trả về là: id Full Name ----------- -------------------- 1 MR. John Smith 2 Mr. James Bond 3 Mrs. Alexa Mantena 4 Mrs. Shui Qui 5 MR. William Hsu 6 Mrs. Danielle Stewart 7 Ms. Martha Mcgrath 8 MR. Henry Fayol 9 Mr. Dick Watson 10 Mrs. Helen Foster 11 Tom Gabe Kết luận Ở phần một này chúng ta đã thấy một số ví dụ minh hoạ các cách sử dụng hàm CASE đơn giản trong truy vấn SQL. Trong phần 2 chúng ta sẽ tiếp tục thảo luận cách sử dụng hàm C ...
Nội dung trích xuất từ tài liệu:
Hàm CASE trong SQL Server (phần 1) Hàm CASE trong SQL Server (phần 1) Trong SQL Sever, hàm CASE kiểm định giá trị dựa tr ên danh sách điều kiện đưa ra, sau đó trả về một hoặc nhiều kết quả. Ở bài này chúng tôi sẽ minh hoạ một số cách dùng khác nhau c ủa hàm này trong những trường hợp khác nhau. Phương thức 1: Cách dùng hàm CASE đơn giản Đây là cách dùng phổ biến nhất của hàm case, trong đó bạn có thể tạo giá trị vô hướng dựa trên danh sách điều kiện đưa ra. Giả sử chúng ta có bảng sau với các cột id (m ã số nhân viên), [First name] (tên), [Last name] (họ) và gender (giới tính). Bây giờ, chúng ta muốn tạo thêm tiền tố (Mr, Ms) ở phía tr ước từng tên, dựa trên giá trị của cột Gender, thực hiện như sau: use tempdb go if exists (select * from dbo.sysobjects where id = object_id(N'[emp]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [emp] GO create table Emp (id int, [First name] varchar(50), [Last name] varchar(50), gender char(1)) go insert into Emp (id,[First name],[Last name], gender ) values (1,'John','Smith','m') insert into Em p (id,[First name],[Last name], gender ) values (2,'James','Bond','m') insert into Emp (id,[First name],[Last name], gender ) values (3,'Alexa','Mantena','f') insert into Emp (id,[First name],[Last name], gender ) values (4,'Shui','Qui','f') insert into Emp (id,[First name],[Last name], gender ) values (5,'William','Hsu','m') insert into Emp (id,[First name],[Last name], gender ) values (6,'Danielle','Stewart','F') insert into Emp (id,[First name],[Last name], gender ) values (7,'Martha','Mcgrat h','F') insert into Emp (id,[First name],[Last name], gender ) values (8,'Henry','Fayol','m') insert into Emp (id,[First name],[Last name], gender ) values (9,'Dick','Watson','m') insert into Emp (id,[First name],[Last name], gender ) values (10,'Helen','Foster','F') go Bây giờ, tạo cột [Full name] (họ t ên đầy đủ) để xác định nên đặt tiền tố l à “Mr.” hay “Ms.”, dựa vào giá trị trên cột Gender. Select [id],[Full Name] = case Gender when 'm' then 'Mr. '+[First name]+ ' '+[Last name] when 'f' then 'Ms. '+[First name]+ ' '+[Last name] end from Emp Thủ tục này trả về kết quả như hình bên dưới: id Full Name ----------- ---------------- 1 Mr. John Smith 2 Mr. James Bond 3 Ms. Alexa Mantena 4 Ms. Shui Qui 5 Mr. William Hsu 6 Ms. Danielle Stewart 7 Ms. Martha Mcgrath 8 Mr. Henry Fayol 9 Mr. Dick Watson 10 Ms. Helen Foster Phương thức 2: Sử dụng hàm case đơn giản với mệnh đề ELSE Nếu thêm một hàng với giá trị NULL vào cột gender, bạn sẽ không thấy có tên nào được trả về trong tập hợp kết quả. Chèn hàng sau vào bảng emp: use tempdb go insert into Emp (id,[First name],[Last name], gender ) values (11,'Tom','Gabe',NULL) go Bây giờ tạo cột [Full name] để xác định tiền tố đặt tr ước mỗi tên là “Mr.” hay “Ms.”, dựa trên giá trị lấy ở cột Gender: Select [id],[Full Name] = case Gender when 'm' then 'Mr. '+[First name]+ ' '+[Last name] when 'f' then 'Ms. '+[First name]+ ' '+[Last name] end from Emp Kết quả trả về như sau: id Full Name ----------- ------------------------ 1 Mr. John Smith 2 Mr. James Bond 3 Ms. Alexa Mantena 4 Ms. Shui Qui 5 Mr. William Hsu 6 Ms. Danielle Stewart 7 Ms. Martha Mcgrath 8 Mr. Henry Fayol 9 Mr. Dick Watson 10 Ms. Helen Foster 11 NULL Tuy nhiên, chúng ta cần hiển thị Full Name (họ tên đầy đủ) của nhân viên, kể cả trong trường hợp không có giá trị tr ên Gender. Để thực hiện điều này, bạn cần dùng hàm CASE với mệnh đề ELSE. Thực hiện truy vấn như sau: Select [id],[Full Name] = case Gender when 'm' then 'Mr. '+[First name]+ ' '+[Last name] when 'f' then 'Mz. '+[First name]+ ' '+[Last name] else [First name]+ ' '+[Last name] end from Emp Kết quả trả về như sau: id Full Name ----------- ---------------------- 1 Mr. John Smith 2 Mr. James Bond 3 Mz. Alexa Mantena 4 Mz. Shui Qui 5 Mr. William Hsu 6 Mz. Danielle Stewart 7 Mz. Martha Mcgrath 8 Mr. Henry Fayol 9 Mr. Dick Watson 10 Mz. Helen Foster 11 Tom Gabe Phương thức 3: Sử dụng hàm CASE khi có hai hoặc nhiều điều kiện trong danh sách Trong hai ví dụ trên, bạn thấy rằng các điều kiện đ ược xét đến hoặc là Male, Female, hay None. Tuy nhiên, trong nhiều trường hợp bạn sẽ cần sử dụng nhiều điều kiện, nhiều toán tử cùng lúc để trả về một giá trị. Thêm cột [Marital Status] (tình trạng hôn nhân) vào bảng và update giá trị như bên dưới: use tempdb go alter table Emp add [Marital Status] char(1) -- S-Single M-Married go Update Emp set [Marital Status]='S' where id in (1,5,8) Update Emp set [Marital Status]='M' where [Marital Status] is NULL Go Giả sử chúng ta muốn hiển thị tên nhân viên có tiền tố đứng trước giúp dễ dàng xác định tình trạng hôn nhân của họ. Thực hiện truy vấn nh ư sau: Select [id],[Full Name] = case when Gender ='m' and [marital status] ='S' then 'MR. '+[First name]+ ' '+[Last name] when Gender ='m' and [marital status] ='M' then 'Mr. '+[First name]+ ' '+[Last name] when Gender ='f' and [marital status] ='S' then 'Ms. '+[First name]+ ' '+[Last name] when Gender ='f' and [marital status] ='M' then 'Mrs. '+[First name]+ ' '+[Last name] else [First name]+ ' '+[Last name] end from Emp Kết quả được trả về là: id Full Name ----------- -------------------- 1 MR. John Smith 2 Mr. James Bond 3 Mrs. Alexa Mantena 4 Mrs. Shui Qui 5 MR. William Hsu 6 Mrs. Danielle Stewart 7 Ms. Martha Mcgrath 8 MR. Henry Fayol 9 Mr. Dick Watson 10 Mrs. Helen Foster 11 Tom Gabe Kết luận Ở phần một này chúng ta đã thấy một số ví dụ minh hoạ các cách sử dụng hàm CASE đơn giản trong truy vấn SQL. Trong phần 2 chúng ta sẽ tiếp tục thảo luận cách sử dụng hàm C ...
Tìm kiếm theo từ khóa liên quan:
Lý thuyết tin học SQL Tin học đại cương giáo trình Tin học đại cương bài giảng Tin học đại cương tài liệu Tin học đại cương lý thuyết Tin học đại cươngGợi ý tài liệu liên quan:
-
Ứng dụng công cụ Quizizz thiết kế trò chơi học tập trong giảng dạy học phần tin học đại cương
12 trang 298 0 0 -
Tài liệu hướng dẫn thực hành Tin học đại cương - ĐH Bách Khoa Hà Nội
40 trang 257 0 0 -
Giáo trình Tin học đại cương part 7
19 trang 231 0 0 -
Giáo trình Tin học đại cương: Phần 1 - ĐH Kinh tế Quốc Dân
130 trang 156 0 0 -
Giáo trình Tin học đại cương (Tái bản năm 2020): Phần 1 - PGS.TS. Nguyễn Thị Thu Thủy (Chủ biên)
105 trang 141 0 0 -
Hướng dẫn thực hành lập trình C trên Visual Studio
9 trang 126 0 0 -
Giáo trình Tin học đại cương: Phần 1 - Vi Hồng Thắm
90 trang 125 0 0 -
Giáo trình Tin học đại cương: Phần 2 - Trần Đình Khang
118 trang 115 0 0 -
Trắc nghiệm và đáp án hệ cơ sở dữ liệu - ĐH Công Nghiệp Tp. Hồ Chí Minh
63 trang 113 0 0 -
Quản trị người dùng trong Exchange 2007 bằng Powershell
9 trang 106 0 0