SQL Server在某些情况下不处理数据

SQL Server在某些情况下不处理数据,sql,sql-server,Sql,Sql Server,下面是我的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

下面是我的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\u Id
始终填充,但
BackTemplate\u Id
有时为
NULL
,这意味着其他表中没有数据。不是空的,只是没有。如果发生这种情况,整个代码块将返回一个
NULL
,而不是只留下一个空白并继续。这就是我在第一部分添加的
ISNULL
中尝试的


长话短说:我需要处理我的
信纸
[Order]
表是否不存在数据,并避免整个过程返回
NULL

您需要在子查询上使用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))  ,'') +

改用
CONCAT
。我不知道我能做到。很 完美!