2012-03-28 53 views
-1

我已经在SQL Server 2008下面的TSQL代码:SQL年底开始打印

declare @ID INT 
    SET @ID = 0 
    IF (@ID IS NOT NULL OR @ID <> 0) 
    begin 
     print 'ID is not 0 or null' 
    end 

由于@ID是0,为什么它甚至进入开始结束......这不应该。

+3

它符合'@ID IS NOT NULL'部分。 'True或x'等于'true'。猜测你可能想要'和',但只要'(@ID <> 0)'就足够了,就好像'@ID是NULL'那么不管'真'。 – 2012-03-28 15:20:05

回答

4

你必须使用and代替

declare @ID INT 
    SET @ID = 0 
    IF (@ID IS NOT NULL AND @ID <> 0) 
    begin 
     print 'ID is not 0 or null' 
    end 
0

@ID is not Null所以它符合你的OR声明一半的要求更好的运气。如果您希望它不打印,那么您应该使用AND

0

你的第一个条件@ID iS NOT NULL是真的,所以它进入并打印语句。

1

最有可能的意思是AND而不是OR。那么它应该有你期望的结果。

0
IF (@ID IS NOT NULL OR @ID <> 0) 

由于@ID不为空,它会进入开始结束块。