这是我的下面的SQL代码:
SELECT 'Template Name: ' + (SELECT Template.TemplateName FROM Stationery INNER JOIN Template ON
Template.Template_Id=Stationery.FrontTemplate_Id INNER JOIN [Order] ON
[Order].Stationery_Id=Stationery.Stationery_Id
WHERE [Order].Order_Id in (9513)) +
' | Back Template: ' + (SELECT ISNULL(Template.TemplateName, '') FROM Stationery INNER JOIN Template ON
Template.Template_Id=Stationery.BackTemplate_Id INNER JOIN [Order] ON
[Order].Stationery_Id=Stationery.Stationery_Id
WHERE [Order].Order_Id in (9513)) +
' Other Information : ' + (SELECT CONVERT(NVARCHAR(MAX), OtherInformation)
FROM Template INNER JOIN [Order]
ON Template.TemplateName=[Order].ProductName
WHERE [Order].Order_Id in (9513)) +
' User Comments: ' + (SELECT ISNULL(CONVERT(NVARCHAR(MAX), [Order].IndividualComments),'')
FROM [Order] WHERE [Order].Order_Id in (9513))
FROM [Order] WHERE [Order].Order_Id in (9513)
问题来自代码的以下部分,由于不存在数据,有时会失败:
SELECT ISNULL(Template.TemplateName, '') FROM Stationery INNER JOIN Template ON
Template.Template_Id=Stationery.BackTemplate_Id INNER JOIN [Order] ON
[Order].Stationery_Id=Stationery.Stationery_Id
WHERE [Order].Order_Id in (9513)
在上面的代码中,FrontTemplate_Id
总是被填充,但BackTemplate_Id
有时是NULL
,这意味着其他表中没有数据。不是NULL,但只是简单的NOTHING。如果发生这种情况,整个代码块将返回NULL
,而不是仅留下空白并继续。这是我尝试使用ISNULL
部分添加的内容
长话短说:如果我的Stationery
和[Order]
表中没有数据,我需要处理,并避免返回NULL
整个事件。
答案 0 :(得分:1)
您需要在子查询上使用ISNULL,而不仅仅是在所选列 -
上 SELECT 'Template Name: ' + ISNULL( (SELECT Template.TemplateName FROM
Stationery INNER JOIN Template ON
Template.Template_Id=Stationery.FrontTemplate_Id INNER JOIN [Order] ON
[Order].Stationery_Id=Stationery.Stationery_Id
WHERE [Order].Order_Id in (9513)) ,'') +