我试图将查询结果返回到变量中,以便能够在insert语句中使用它。但是,即使我认为我已正确设置ISNULL(NULLIF())
,我的选择仍会返回null。
declare @test varchar(10)
set @test = (select ISNULL(NULLIF(discnumber,''),'NA')
from discmaster
where meteredfilename = '3501' or nonmeteredfilename='3501')
select @test
似乎正确但仍会返回NULL
值。你会选择Case而不是100%肯定该方法。
答案 0 :(得分:6)
我将ISNULL
移到子查询之外 - 如果子查询没有返回结果怎么办?
set @test = COALESCE(
(select NULLIF(discnumber,'')
from discmaster
where meteredfilename = '3501' or nonmeteredfilename='3501')
,'NA')
(我也是一个势利小人,用ISNULL
取代COALESCE
。除了少数情况,COAELSCE
是更好的功能。)
答案 1 :(得分:0)
而不是ISNULL(NULLIF(discnumber,''),'NA')
尝试COALESCE(discnumber,'NA')