Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Cách IIF () hoạt động trong SQL Server

Trong SQL Server, IIF() (không nên nhầm lẫn với IF câu lệnh) là một hàm có điều kiện trả về đối số thứ hai hoặc thứ ba dựa trên đánh giá của đối số đầu tiên.

Đó là một cách viết tắt để viết CASE biểu hiện. Về mặt logic, nó tương đương với CASE WHEN X THEN Y ELSE Z END giả sử IIF(X, Y, Z) .

IIF() là chữ viết tắt của IF ngay lập tức .

Cú pháp

Cú pháp như sau:

IIF ( boolean_expression, true_value, false_value )

Ở đâu:

  • boolean_expression là biểu thức được đánh giá.
  • true_value được trả lại nếu boolean_expression là sự thật.
  • false_value được trả lại nếu boolean_expression là sai hoặc không xác định.

Như với CASE biểu thức, IIF() các câu lệnh chỉ có thể được lồng vào nhau ở mức tối đa là 10.

Ví dụ

Dưới đây là một ví dụ cơ bản để minh họa cách IIF() hoạt động.

SELECT IIF( 1 < 2, 'True', 'False' );

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 đối số thứ hai được trả về.

Điều này tương đương với việc làm như sau.

SELECT 
  CASE WHEN 1 < 2 THEN 'True'
    ELSE 'False'
  END;

Kết quả:

True

Trong những ví dụ này, tôi đã sử dụng các từ “Đúng” và “Sai” nhưng tôi có thể sử dụng bất cứ thứ gì.

Ví dụ, tôi có thể đã làm điều này thay thế:

SELECT IIF( 1 < 2, 'Fail', 'Pass' );

Kết quả:

Fail

Hoặc nó có thể bị loại bỏ hoàn toàn khỏi câu trả lời kiểu nhị phân “true” hoặc “false”.

Ví dụ:

SELECT IIF( 1 < 2, 'Deadlift', 'Bench Press' );

Kết quả:

Deadlift

Kiểm tra một biến

Trong thực tế, bạn thường kiểm tra các biến, cột, v.v. thay vì kiểm tra hằng số như trong các ví dụ trước.

Đây là một ví dụ kiểm tra một biến.

DECLARE @bankBalance int = 123;
SELECT IIF(@bankBalance > 100, 'Rich!', 'Poor');

Kết quả:

Rich!

Ví dụ về cơ sở dữ liệu

Dưới đây là một ví dụ sử dụng các cột từ cơ sở dữ liệu.

SELECT TOP(10)
    Name,
    Population,
    IIF( 
        Population > 400000, 
        'Big City', 
        'Small City' 
        ) AS 'Big/Small'
FROM city;

Kết quả:

+----------------+--------------+-------------+
| Name           | Population   | Big/Small   |
|----------------+--------------+-------------|
| Kabul          | 1780000      | Big City    |
| Qandahar       | 237500       | Small City  |
| Herat          | 186800       | Small City  |
| Mazar-e-Sharif | 127800       | Small City  |
| Amsterdam      | 731200       | Big City    |
| Rotterdam      | 593321       | Big City    |
| Haag           | 440900       | Big City    |
| Utrecht        | 234323       | Small City  |
| Eindhoven      | 201843       | Small City  |
| Tilburg        | 193238       | Small City  |
+----------------+--------------+-------------+

Các hàm IIF () lồng nhau

Dưới đây là một ví dụ về lồng một IIF() hàm số. Bằng cách “lồng vào nhau”, ý tôi là tôi chuyển một IIF() khác hàm như một đối số cho IIF() bên ngoài chức năng.

DECLARE @bankBalance int = 123;
SELECT IIF(
    @bankBalance > 100, 
    IIF(@bankBalance > 150, 'Rich!', 'Wealthy'), 
    'Poor'
    );

Kết quả:

Wealthy

Bạn có thể lồng IIF() chức năng lên đến cấp 10.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tạo hồ sơ thư cơ sở dữ liệu (SSMS)

  2. nhóm sql theo so với riêng biệt

  3. 2 cách trả về danh sách kích hoạt trong cơ sở dữ liệu máy chủ SQL bằng T-SQL

  4. Những hạn chế đối với SQL Server Compact là gì? (Hoặc - làm thế nào để người ta chọn một cơ sở dữ liệu để sử dụng trên nền tảng MS?)

  5. Cách thêm cột nhận dạng vào bảng bằng TSQL và GUI trong SQL Server - Hướng dẫn SQL Server / T-SQL Phần 40