The CASE
statement is the closest to IF in SQL and is supported on all versions of SQL Server.
(CASE
语句与SQL中的IF最接近,并且在所有版本的SQL Server中都受支持。)
SELECT CAST(
CASE
WHEN Obsolete = 'N' or InStock = 'Y'
THEN 1
ELSE 0
END AS bit) as Saleable, *
FROM Product
You only need to do the CAST
if you want the result as a Boolean value.
(如果要将结果作为布尔值,则仅需要执行CAST
。)
If you are happy with an int
, this works: (如果您对int
感到满意,则可以这样做:)
SELECT CASE
WHEN Obsolete = 'N' or InStock = 'Y'
THEN 1
ELSE 0
END as Saleable, *
FROM Product
CASE
statements can be embedded in other CASE
statements and even included in aggregates.
(CASE
语句可以嵌入其他CASE
语句中,甚至可以包含在聚合中。)
SQL Server Denali (SQL Server 2012) adds the IIF statement which is also available in access (pointed out by Martin Smith ):
(SQL Server Denali(SQL Server 2012)添加了IIF语句,该语句也可以在访问中使用 (由Martin Smith指出):)
SELECT IIF(Obsolete = 'N' or InStock = 'Y', 1, 0) as Saleable, * FROM Product
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…