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