1. Trang chủ
  2. » Công Nghệ Thông Tin

Hàm CASE trong SQL Server (phần 1) docx

5 406 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 5
Dung lượng 104,85 KB

Nội dung

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

Trang 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 Emp (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')

Trang 2

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','Mcgrath','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

Trang 3

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:

Trang 4

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

Trang 5

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 CASE ở những trường hợp phức tạp

Ngày đăng: 11/07/2014, 16:20

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w