Trả về giá trị chọn lựa từ nhiều điều kiện khác nhau
CASE có hai dạng:
- Hàm CASE đơn giản so sánh một biểu thức với tập các biểu thức đơn giản để xác định kết quả
CASE input_expression
WHEN when_expression THEN result_expression
[ ...n ]
[ELSE else_result_expression ]
END
Ví dụ: Simple Case
Create Proc spr_ThuTrongTuan
(@D As SmallDateTime, @Thu VarChar(10) OUTPUT)
As
Set @Thu = Case Datepart(w, @D)
When 1 Then 'Chu Nhat'
When 2 Then 'Thu Hai'
When 3 Then 'Thu Ba'
When 4 Then ‘Thu Tu’
When 5 Then ‘Thu Nam’
When 6 Then ‘Thu Sau’
Else 'Thu Bay'
End
Go
- Hàm CASE tìm kiếm kiểm tra các biểu thức điều kiện để xác định kết quả.
CASE
WHEN Boolean_expression THEN result_expression
[ ...n ]
[ELSE else_result_expression ]
END
Ví dụ: Xây dựng thủ tục trả về số ngày trong tháng và năm
Create Proc spr_Days (@Thang Int, @Nam Int)
As
Declare @SN Int
Set @SN = Case
When @Thang In (1,3,5,7,8,10,12) Then 31
When @Thang In (4,6,9,11) Then 30
When @Nam % 4 = 0 Then 29
Else 28
End
Return @SN
Go
- Có thể lồng Case:
Create Proc spr_NgayTrongThang (@Thang Int, @Nam Int)
As
Declare @SN Int
Set @SN = Case
When @Thang In (1,3,5,7,8,10,12) Then 31
When @Thang In (4,6,9,11) Then 30
Else Case
When @Nam % 4 = 0 Then 29
Else 28
End
End
Return @SN
Go
Thực hiện thủ tục:
Declare @SN int
Exec @SN = spr_ngaytrongthang 2,2000
print 'So ngay trong thang 2/2002 la ' + Cast(@SN As Char)