处理空白查询结果,ISNULL(NULLIF())

Tim*_*m B 3 sql sql-server

我试图将查询的结果返回到变量,我能够在插入语句中使用它.但是我的选择仍然返回null,即使我相信我已ISNULL(NULLIF())正确设置.

declare @test varchar(10)

set @test =  (select ISNULL(NULLIF(discnumber,''),'NA')
from discmaster
where meteredfilename =  '3501' or nonmeteredfilename='3501')

select @test
Run Code Online (Sandbox Code Playgroud)

它似乎是正确的但仍然返回一个NULL值.你会选择Case而不是100%肯定该方法.

Dam*_*ver 6

我会移动ISNULL子查询的外部 - 如果子查询没有返回结果怎么办?

set @test =  COALESCE(
           (select NULLIF(discnumber,'')
              from discmaster
              where meteredfilename =  '3501' or nonmeteredfilename='3501')
       ,'NA')
Run Code Online (Sandbox Code Playgroud)

(我也一直是一个势利和更换ISNULLCOALESCE,外面的几个方案,COAELSCE是更好的功能).