ISNULL列SQL

时间:2011-11-23 14:48:16

标签: sql tsql

问题: 代码读取每一行,并确定它是否为空。 如果列为null,我想打印出“works”。否则,它不应该做任何事情。 现在它不起作用。它给了我一个错误,该列不存在。(在if语句中提到的那个)

这是代码。 代码:

DECLARE Employee_Cursor CURSOR FOR

SELECT [Description]  
FROM tblSubViews ts  
INNER JOIN tblViewSubViewJoin tvs  
ON ts.SubViewId = tvs.SubViewId Where tvs.ViewId = 4

OPEN Employee_Cursor

FETCH NEXT FROM Employee_Cursor
WHILE @@FETCH_STATUS = 0

BEGIN   
if (Description = null)
begin
print 'works'
end
   FETCH NEXT FROM Employee_Cursor
END
CLOSE Employee_Cursor
DEALLOCATE Employee_Cursor

4 个答案:

答案 0 :(得分:3)

NULL是SQL中的一个特殊值 - 实际上,它是值的缺席

因此,由于它不是一个值,您无法与常规方法进行比较 - 您需要使用IS NULLIS NOT NULL方法:

if (Description IS NULL)
begin
  print 'works'
end

IS NULLIS NOT NULL比较,可以获得您正在寻找的结果。

答案 1 :(得分:2)

您无法使用等号与NULL进行比较,您可以使用ID (Description IS NULL)

使用游标时,还需要选择变量:

  FETCH NEXT FROM Employee_Cursor INTO @Description 
  WHILE @@FETCH_STATUS = 0

您当然需要声明@Description是适合该列的类型,

答案 2 :(得分:2)

在这种情况下不需要光标

SELECT 
[Description],
ISNULL([Description]   ,'Works') AS text
FROM tblSubViews ts   
INNER JOIN 
tblViewSubViewJoin tvs   
ON 
ts.SubViewId = tvs.SubViewId 
Where 
tvs.ViewId = 4

然后你可以通过在WHERE子句中添加一个只选择空描述列的额外条件来缩短它吗?

答案 3 :(得分:0)

根据您的逻辑,在查询中使用isnull()功能。