无法相信我对此感到困惑,但如何在select语句中检查我返回的值为null
IF EXISTS(SELECT TU.Tagged FROM TopicUser TU
WHERE TU.TopicId = @TopicId and TU.UserId = @UserId)
BEGIN
--do stuff
END
TU.Tagged
的值是NULL
但是它确实进入了条件。记住它不存在。
答案 0 :(得分:3)
看起来你需要这样的东西:
IF EXISTS(SELECT TU.Tagged
FROM TopicUser TU
WHERE TU.TopicId = @TopicId
AND TU.UserId = @UserId
AND TU.Tagged IS NOT NULL)
BEGIN
--do stuff
END
否则,您只检查符合条件的记录是否存在,但这些记录在NULL
列中的值可能为TU.Tagged
。
答案 1 :(得分:3)
要检查某些内容是否存在,您只需说:
IF EXISTS(SELECT TOP 1 1 FROM TABLE WHERE ID = '2')
如果记录存在,则只返回1。对于您而言,记录存在但列为空。您需要检查用户的ID。我的意思是,即使某些东西是空的,它仍然将它视为存在。
我希望这是有道理的。
答案 2 :(得分:3)
解决方案1: 使用IsNULL()函数,当下面的查询返回null值时,IsNULL函数将null值替换为0,并将条件视为False。
IF EXISTS (SELECT IsNULL(TU.Tagged,0) FROM TopicUser TU
WHERE TU.TopicId = @TopicId and TU.UserId = @UserId)
BEGIN
END
解决方案2: 使用(IS NULL或IS NOT NULL)属性。
IF EXISTS (SELECT TU.Tagged FROM TopicUser TU
WHERE TU.TopicId = @TopicId and TU.UserId = @UserId
AND TU.Tagged IS NOT NULL)
BEGIN
END
答案 3 :(得分:1)
您可以使用ISNULL()。当一个值,如果你想啊,你可以使用下面的查询来代替它选择查询返回null。
coalesce
这样,您可以将null替换为所需的任何值。