Ari*_*ule 2 sql t-sql sql-server
不敢相信我坚持这个,但我如何检查我返回的值在 select 语句中是否为空
IF EXISTS(SELECT TU.Tagged FROM TopicUser TU
WHERE TU.TopicId = @TopicId and TU.UserId = @UserId)
BEGIN
--do stuff
END
Run Code Online (Sandbox Code Playgroud)
的值TU.Tagged是,NULL但它确实进入了条件。心目中它不存在。
看起来你需要这样的东西:
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
Run Code Online (Sandbox Code Playgroud)
否则,您只检查是否存在满足您的条件的记录,但这些记录可能NULL在TU.Tagged列中具有值。
小智 5
解决方案 1:使用 IsNULL() 函数,当以下查询返回空值时,IsNULL 函数将空值替换为 0,如果条件视为 False。
IF EXISTS (SELECT IsNULL(TU.Tagged,0) FROM TopicUser TU
WHERE TU.TopicId = @TopicId and TU.UserId = @UserId)
BEGIN
END
Run Code Online (Sandbox Code Playgroud)
解决方案 2:使用 (IS NULL OR 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
Run Code Online (Sandbox Code Playgroud)