如何在SQL SELECT中执行IF-THEN条件语句

0 投票
最新提问 2月 14, 2017 用户: yanxue (270 分)

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

例如:

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

    1个回答

    0 投票
    最新回答 2月 14, 2017 用户: 花花 (390 分)

    该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
    

    上面的CAST将结果转换为布尔类型,如果可以用int类型,就不必转换:

    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
    
    还有一种写法,适用与单列内容的转换:
    SELECT
        FirstName, LastName,
        Salary, DOB,
        CASE Gender
            WHEN 'M' THEN 'Male'
            WHEN 'F' THEN 'Female'
        END
    FROM Employees
    欢迎来到编程助手,编程方面有什么不懂的问题可以尽管在这里提问,你将会收到热心爱好者的回答。
    ...