我有一个连接查询,如果为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。
答案 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