如何在SQL的SELECT中执行IF ... THEN

0 投票
最新提问 1月 18, 2017 用户: 青山 (640 分)

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

例如:

SELECT IF(Obsolete = 'N' OR InStock = 'Y' ? 1 : 0) AS Saleable, * FROM Product

    1个回答

    0 投票
    最新回答 1月 18, 2017 用户: snow (630 分)

    该CASE声明最接近IF的用法bing并且Server的所有版本都支持

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

    如果需要的结果是布尔类型则需要做CAST转换,如果结果是int,则不需要转换,如下:

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

    CASE语句可以嵌入其他CASE语句中,甚至支持在聚集体中使用。

    SQL Server 2012中新增加了IIF语法

    SELECT IIF(Obsolete = 'N' or InStock = 'Y', 1, 0) as Saleable, * FROM Product
    
    欢迎来到编程助手,编程方面有什么不懂的问题可以尽管在这里提问,你将会收到热心爱好者的回答。
    ...