Câu lệnh điều kiện IF…ELSE trong SQL Server: Ví dụ về câu lệnh SELECT trong T-SQL.
⚡ Tóm tắt thông minh
Câu lệnh IF…ELSE là một câu lệnh điều khiển luồng trong SQL Server, thực thi một khối mã T-SQL khi điều kiện Boolean được đánh giá là đúng, và một khối mã thay thế tùy chọn khi điều kiện tương tự được đánh giá là sai.
Tại sao bạn cần câu lệnh có điều kiện?
Câu lệnh điều kiện trong SQL Server giúp bạn định nghĩa các logic và hành động khác nhau cho các điều kiện khác nhau. Chúng cho phép bạn thực hiện các hành động khác nhau dựa trên các điều kiện được định nghĩa trong câu lệnh. Trong thực tế, bạn thực hiện nhiều hành động phụ thuộc vào kết quả của một hoạt động hoặc tình huống khác.
Một số ví dụ thực tế về câu lệnh điều kiện là:
- Nếu ngày mai trời mưa, tôi sẽ lên kế hoạch cho một chuyến đi đường dài.
- Nếu giá vé máy bay từ thành phố của tôi dưới 400 đô la, tôi sẽ đi nghỉ ở châu Âu; nếu không, tôi sẽ chọn một địa điểm du lịch gần đó.
Ở đây, bạn có thể thấy rằng một hành động, như chuyến đi đường dài ở trên, phụ thuộc có điều kiện vào kết quả của một hoạt động khác, đó là "ngày mai trời có mưa hay không". Tương tự như vậy, MS SQL server Ngoài ra, nó còn cung cấp khả năng thực thi câu lệnh T-SQL một cách có điều kiện.
Câu lệnh IF…ELSE trong SQL Server
Trong MS SQL, IF…ELSE là một loại câu lệnh điều kiện. Bất kỳ câu lệnh T-SQL nào cũng có thể được thực thi có điều kiện bằng cách sử dụng IF…ELSE. Hình dưới đây giải thích cách hoạt động của các nhánh IF và ELSE trong SQL Server:
- Nếu điều kiện được đánh giá là True, thì các câu lệnh T-SQL theo sau điều kiện IF trong SQL Server sẽ được thực thi.
- Nếu điều kiện được đánh giá là Sai, thì các câu lệnh T-SQL theo sau từ khóa ELSE sẽ được thực thi.
- Sau khi câu lệnh IF T-SQL hoặc câu lệnh ELSE T-SQL được thực thi, các câu lệnh T-SQL không điều kiện khác sẽ tiếp tục được thực thi.
Cú pháp và quy tắc của câu lệnh IF…ELSE trong SQL
Cú pháp:
IF <Condition> {Statement | Block_of_statement} [ ELSE {Statement | Block_of_statement}]
Quy tắc:
- Điều kiện phải là một biểu thức Boolean, tức là điều kiện đó sẽ trả về một giá trị Boolean khi được đánh giá.
- Câu lệnh IF…ELSE trong SQL có thể xử lý có điều kiện một câu lệnh T-SQL đơn lẻ hoặc một khối các câu lệnh T-SQL.
- Một khối câu lệnh nên bắt đầu bằng từ khóa BEGIN và kết thúc bằng từ khóa END.
- Việc sử dụng BEGIN và END giúp SQL Server xác định khối lệnh cần được thực thi và tách nó ra khỏi phần còn lại của các câu lệnh T-SQL không thuộc khối T-SQL IF…ELSE.
- ELSE là tùy chọn.
Câu lệnh IF…ELSE chỉ với giá trị số trong biểu thức Boolean.
Trong ví dụ đầu tiên này, biểu thức Boolean chỉ sử dụng các giá trị số. Hãy xem xét điều kiện bên dưới, điều kiện này luôn đúng vì 1 bằng 1.
Điều kiện: ĐÚNG
IF (1=1) PRINT 'IF STATEMENT: CONDITION IS TRUE' ELSE PRINT 'ELSE STATEMENT: CONDITION IS FALSE'
Chạy truy vấn với điều kiện đúng (1=1) sẽ in ra thông báo của nhánh IF:
Điều kiện: SAI
IF (1=2) PRINT 'IF STATEMENT: CONDITION IS TRUE' ELSE PRINT 'ELSE STATEMENT: CONDITION IS FALSE'
Với điều kiện sai (1=2), nhánh ELSE sẽ được thực thi thay thế:
Giả sử bạn có một bảng tên là 'GuruBảng '99' với hai cột và bốn hàng, như hiển thị bên dưới. Chúng ta sẽ sử dụng bảng này.GuruBảng '99' trong các ví dụ sau đây.
Câu lệnh IF…ELSE với biến trong biểu thức Boolean
Thay vì các số cố định, biểu thức Boolean có thể so sánh một biếnVí dụ sau đây khai báo một biến kiểu số nguyên và kiểm tra giá trị của nó.
Điều kiện: ĐÚNG
DECLARE @Course_ID INT = 4 IF (@Course_ID = 4) Select * from Guru99 where Tutorial_ID = 4 ELSE Select * from Guru99 where Tutorial_ID != 4
Vì @Course_ID bằng 4, nhánh IF sẽ chạy và trả về hàng có Tutorial_ID bằng 4:
Điều kiện: SAI
DECLARE @Course_ID INT = 4 IF (@Course_ID != 4) Select * from Guru99 where Tutorial_ID = 4 ELSE Select * from Guru99 where Tutorial_ID != 4
Ở đây điều kiện là sai, vì vậy nhánh ELSE sẽ chạy và trả về mọi hàng có Tutorial_ID khác 4:
IF…ELSE với BEGIN…END
Khi một nhánh cần thực thi nhiều hơn một câu lệnh, hãy đặt các câu lệnh đó trong khối BEGIN…END. Ví dụ dưới đây thực thi hai câu lệnh SELECT trong mỗi nhánh.
Điều kiện: ĐÚNG
DECLARE @Course_ID INT = 2 IF (@Course_ID <=2) BEGIN Select * from Guru99 where Tutorial_ID = 1 Select * from Guru99 where Tutorial_ID = 2 END ELSE BEGIN Select * from Guru99 where Tutorial_ID = 3 Select * from Guru99 where Tutorial_ID = 4 END
Vì @Course_ID nhỏ hơn hoặc bằng 2, nên khối IF sẽ chạy cả hai câu lệnh SELECT bên trong BEGIN…END:
Điều kiện: SAI
DECLARE @Course_ID INT = 2 IF (@Course_ID >=3) BEGIN Select * from Guru99 where Tutorial_ID = 1 Select * from Guru99 where Tutorial_ID = 2 END ELSE BEGIN Select * from Guru99 where Tutorial_ID = 3 Select * from Guru99 where Tutorial_ID = 4 END
Lần này điều kiện không đúng, vì vậy khối ELSE thực thi hai câu lệnh SELECT của nó:
Câu lệnh IF không có ELSE
Bạn có thể sử dụng câu lệnh IF trong SQL mà không cần phần ELSE, vì phần ELSE là tùy chọn. Ví dụ:
DECLARE @Course_ID INT = 2 IF (@Course_ID <=2) Select * from Guru99 where Tutorial_ID = 1
Nó in ra một dòng duy nhất như sau:
Việc thực thi điều kiện sai sẽ không cho ra kết quả nào. Hãy xem xét truy vấn sau:
DECLARE @Course_ID INT = 2 IF (@Course_ID <=0) Select * from Guru99 where Tutorial_ID = 1
Kết quả trống, như hiển thị bên dưới:
Câu lệnh IF…ELSE lồng nhau
Không giống như một số khác ngôn ngữ lập trìnhSQL Server không cung cấp câu lệnh ELSE IF bên trong điều kiện IF…ELSE. Thay vào đó, bạn có thể lồng một điều kiện IF…ELSE bên trong một điều kiện IF…ELSE khác, như minh họa bên dưới:
DECLARE @age INT; SET @age = 60; IF @age < 18 PRINT 'underage'; ELSE BEGIN IF @age < 50 PRINT 'You are below 50'; ELSE PRINT 'Senior'; END;
Với @age là 60, câu lệnh IF…ELSE lồng nhau sẽ in ra kết quả sau:
- Đoạn mã sẽ in ra 'underage' nếu giá trị của @age nhỏ hơn 18.
- Nếu không, phần ELSE sẽ được thực thi. Phần ELSE chứa một câu lệnh IF…ELSE lồng nhau.
- Nếu giá trị của @age nhỏ hơn 50, chương trình sẽ in ra 'Bạn dưới 50 tuổi'. Nếu không có điều kiện nào đúng, chương trình sẽ in ra 'Người cao tuổi'.












