如何在null时用null替换null

时间:2015-03-02 06:42:57

标签: sql sql-server

我有一个连接查询,如果为null,我想用字符串替换NULL值。 如果它不是NULL,则替换为空字符串。

select distinct Code= R_Schedule.FoodId,Name= FoodName + ' = price ' +(CONVERT( varchar(50),R_Foods.FoodPrice) + ISNULL(str(R_Schedule.dayId ),' - public-'))    from R_Foods join R_Schedule on R_Foods.FoodId=R_Schedule.FoodId where R_Schedule.DayId=6 or DayId is null

请这个图片: http://i.stack.imgur.com/Kv81f.png

我的查询的重要部分是:

 ISNULL(str(R_Schedule.dayId ),' - public -'))

如果为null,则此部分返回'public',如果它不为null则返回column的id。 如果它不为null,我不想要返回id。

1 个答案:

答案 0 :(得分:2)

您可以使用CASE WHEN。当dayId为null时,它将返回- public-否则它将与''空串联  如果需要,可以使用其他值进行设置。

select distinct 
   Code = R_Schedule.FoodId,
   Name = CASE WHEN R_Schedule.dayId IS NULL THEN  FoodName + ' = price ' +(CONVERT( varchar(50),R_Foods.FoodPrice)) + ' - public-'
              ELSE  FoodName + ' = price ' +(CONVERT( varchar(50),R_Foods.FoodPrice)) + 'othervalue' END
from 
   R_Foods join R_Schedule 
      on R_Foods.FoodId=R_Schedule.FoodId 
where 
     R_Schedule.DayId=6 
     or DayId is null