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

时间:2011-07-26 14:18:20

标签: sql sql-server

我试图将查询结果返回到变量中,以便能够在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%肯定该方法。

2 个答案:

答案 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')