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

Làm cách nào để thực hiện IF ... THEN trong SQL SELECT?

CASE câu lệnh gần nhất với IF trong SQL và được hỗ trợ trên tất cả các phiên bản của SQL Server.

SELECT CAST(
             CASE
                  WHEN Obsolete = 'N' or InStock = 'Y'
                     THEN 1
                  ELSE 0
             END AS bit) as Saleable, *
FROM Product

Bạn chỉ cần sử dụng CAST nếu bạn muốn kết quả là giá trị Boolean. Nếu bạn hài lòng với int , điều này hoạt động:

SELECT CASE
            WHEN Obsolete = 'N' or InStock = 'Y'
               THEN 1
               ELSE 0
       END as Saleable, *
FROM Product

CASE câu lệnh có thể được nhúng vào CASE khác và thậm chí được đưa vào tổng hợp.

SQL Server Denali (SQL Server 2012) thêm câu lệnh IIF cũng có sẵn trong quyền truy cập (do Martin Smith chỉ ra):

SELECT IIF(Obsolete = 'N' or InStock = 'Y', 1, 0) as Saleable, * FROM Product


  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ính toán khoảng cách giữa hai điểm (Vĩ độ, Kinh độ)

  2. Thêm gợi ý truy vấn khi gọi Hàm Table-Valued

  3. Chạy tất cả các tệp SQL trong một thư mục

  4. OPENXML với xmlns:dt

  5. SQL Server - Điều gì xảy ra khi một hàng trong bảng được cập nhật?