检查 SQL Server 中列的值是否为空

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但它确实进入了条件。心目中它不存在。

And*_*yev 5

看起来你需要这样的东西:

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)

否则,您只检查是否存在满足您的条件的记录,但这些记录可能NULLTU.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)