Bootstrap

如何在SQL SELECT中执行 IF...THEN语句?

CASE 语句

CASE 语句在 SQL 中最接近于 IF,并且在所有版本的 SQL Server 中都受支持。

示例 1: 使用 CAST 将结果转换为布尔值
SELECT CAST(
    CASE 
        WHEN Obsolete = 'N' OR InStock = 'Y'
        THEN 1
        ELSE 0
    END AS bit) AS Saleable, *
FROM Product

你只需要使用 CAST 运算符,如果你想将结果作为布尔值。如果你对整数满意,这也可以工作:

示例 2: 不使用 CAST 直接返回整数值
SELECT CASE 
        WHEN Obsolete = 'N' OR InStock = 'Y'
        THEN 1
        ELSE 0
    END AS Saleable, *
FROM Product

CASE 语句可以嵌套在其他 CASE 语句中,甚至可以包含在聚合函数中。

SQL Server Denali (SQL Server 2012) 添加了 IIF 语句,该语句也在 Access 中可用:

SELECT IIF(Obsolete = 'N' OR InStock = 'Y', 1, 0) AS Saleable, * FROM Product
;