SQL 2005 替代 Access 查询的方法

3

你好,我陷入了以下查询的困境,这个查询是我为Access编写的,并且有效地工作。但是当我通过SQL 2005运行它时,它会给我一个错误提示 (关键字“IS”附近的语法不正确)。

我已经查阅了类似的问题,但是没有解决我的问题。

以下是Access查询。

select iif(ISBN IS Null,"1","0") as OK from products 

请提供 SQL 2005 版本。
这可能是一个基本的查询,但我对 SQL 不熟悉。
提前感谢。

@mcalex 它可在 SQL Server 2012 上使用。 - John Woo
2个回答

4
使用CASE代替。
SELECT CASE 
            WHEN ISBN IS Null
            THEN 1
            ELSE 0
       END AS OK 
FROM   products 

但是如果你正在使用SQL Server 2012,IIF应该可以工作。

更新

SELECT CASE 
            WHEN expression1
            THEN 0
            ELSE 
                CASE 
                    WHEN expression2
                    THEN 2
                    ELSE 3
                END
       END AS OK 
FROM   products 

太好了。但是如果我使用嵌套的 iif(exp,"0",iif(exp,"2","3")) 呢? - Mehboob Afridi

1

您需要使用CASE表达式来替换IIf()。SQL Server 2005没有IIF()函数:

select case when ISBN is null then 1 else 0 end as OK
from products

如果您有其他IIF()语句,那么可以将它们嵌套:
select 
  case 
     when ISBN is null 
     then 1 
     else 
       case when yourCol = "Value"
            then 2
            else 3
       end 
  end as OK
from products

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接