Sinh viên học một ngôn ngữ lập trình mới thường sẽ bắt đầu bài học đầu tiên bằng IF
câu lệnh, trong đó câu lệnh của họ sẽ trả về một giá trị chỉ khi biểu thức là đúng.
Sau đó, chúng có thể tiến triển thành IF... ELSE
câu lệnh, nơi họ có thể xác định một giá trị khác để trả về nếu biểu thức là sai. Vì vậy, do đó, hãy trả về một giá trị nếu biểu thức là đúng và một giá trị khác nếu biểu thức là sai.
SQL Server chắc chắn bao gồm IF... ELSE
trong hộp công cụ T-SQL của nó.
SQL Server cũng bao gồm IIF()
, thực hiện một công việc tương tự, nhưng với cú pháp ngắn gọn hơn.
Nhưng có một số khác biệt nhỏ.
Sự khác biệt
Bảng sau đây trình bày những điểm khác biệt chính giữa IF
và câu lệnh IIF()
chức năng.
IF | IIF() | |
---|---|---|
Loại | Câu lệnh điều khiển luồng. | Hàm logic. |
Kết quả được xác định như thế nào? | Bạn chỉ định câu lệnh SQL hoặc khối câu lệnh để thực thi. | Bạn chỉ định giá trị thực tế để trả về. |
Làm tổ? | Giới hạn số cấp lồng nhau tùy thuộc vào bộ nhớ khả dụng. | Chỉ có thể được lồng vào nhau ở mức tối đa là 10. |
Điều gì sẽ xảy ra nếu biểu thức trả về false? | ELSE từ khóa là tùy chọn (tức là bạn có thể chọn có phục vụ cho các kết quả sai hay không). | Yêu cầu cả giá trị đúng và sai (nghĩa là bạn phải đáp ứng cho các kết quả sai). |
IIF()
hàm thực sự là một cách viết tắt để viết CASE
biểu hiện. Do đó, nó có chung những hạn chế như CASE
biểu thức khác với IF
tuyên bố.
Câu lệnh IF
Đây là IF
tuyên bố.
IF 1 < 2 SELECT 'True';
Kết quả:
True
Trong trường hợp này, biểu thức để đánh giá là 1 < 2
. Đúng là 1 nhỏ hơn 2 nên SELECT
câu lệnh đã được chạy và True
đã được trả lại.
Tuy nhiên, nếu biểu thức là false, sẽ không có gì xảy ra.
IF 1 > 2 SELECT 'True';
Kết quả:
Commands completed successfully.
Tất cả những gì SQL Server nói với tôi là lệnh đã hoàn tất thành công. Không có gì khác được trả lại, vì không có gì khác được chỉ định.
Câu lệnh IF… ELSE
Trong trường hợp này, chúng ta có thể thêm ELSE
tùy chọn đến IF
để nó trở thành một câu lệnh IF... ELSE
tuyên bố.
IF 1 > 2
SELECT 'True';
ELSE
SELECT 'False';
Kết quả:
False
Bây giờ chúng ta cũng nhận được kết quả khi biểu thức là sai.
Hàm IIF ()
IIF()
hàm cho phép chúng ta viết cùng một logic bằng cách sử dụng một cú pháp ngắn gọn hơn.
Do đó, chúng tôi có thể viết lại ví dụ trước thành sau:
SELECT IIF( 1 > 2, 'True', 'False' );
Kết quả:
False
IIF()
về cơ bản hàm là một cách ngắn gọn hơn để thực hiện IF... ELSE
tuyên bố.
Trên thực tế, điều đó chỉ đúng một phần. Như đã đề cập, IIF()
chức năng dựa trên CASE
và do đó có cùng các hạn chế của CASE
biểu thức (chẳng hạn như chỉ có thể lồng vào mức tối đa là 10).
Do đó, câu lệnh trước tương đương với câu lệnh sau.
SELECT
CASE WHEN 1 > 2 THEN 'True'
ELSE 'False'
END;
Kết quả:
False
Lưu ý rằng IIF()
yêu cầu hai đối số và do đó, bạn được yêu cầu chỉ định một giá trị để trả về nếu kết quả biểu thức là false (ngay cả khi bạn chỉ định NULL
hoặc một chuỗi trống).