nvarchar连接问题

Ash*_*yed 2 sql nvarchar

在处理所有困难的事情后,我可能会尝试做一件简单的事情但看起来这让我很头疼.我试图将文本连接到变量@strXml这是一个nvarchar变量来构建Xml元素,但@strXml返回null.请帮忙.我在下面发布我的代码.

DECLARE @strXml nvarchar(max) = ''
SET @strXml = '<PromoName>' + (Select PromoName From #Temp) + '</PromoName>' 
SET @strXml = @strXml + '<PromoDesc>' + (Select PromoDesc From #Temp) + '</PromoDesc>'
SET @strXml = @strXml + '<PromoCode>' + (Select PromoCode From #Temp) + '</PromoCode>' 
SET @strXml = @strXml + '<BeginDate>' + (Select Convert(nvarchar, BeginDate) From #Temp) + '</BeginDate>'
SET @strXml = @strXml + '<EndDate>' + (Select Convert(nvarchar, EndDate) From #Temp) + '</EndDate>'
SET @strXml = @strXml + '<RawHtml>' + (Select RawHtml From #Temp) + '</RawHtml>'
SET @strXml = @strXml + '<FocusPromoInd>' + Convert(nvarchar, 0) + '</FocusPromoInd>'
SET @strXml = @strXml + '<ParentPromoCode>' + (Select ParentPromoCode From #Temp) + '</ParentPromoCode>'
SET @strXml = @strXml + '<ActiveInd>' + (Select Case When ActiveInd=1 Then '1' Else '0' End From #Temp) + '</ActiveInd>'
SET @strXml = @strXml + '<AreaID>' + (Select Convert(nvarchar, AreaID) From #Temp) + '</AreaID>'
SET @strXml = '<PromoData><Promotion>' + @strXml + '</Promotion></PromoData>'
Select @strXml as strXML
Run Code Online (Sandbox Code Playgroud)

当我运行最后一个查询时,它返回null.即使在调试模式下,我也看不到每行更新@strXml的值.请帮忙!谢谢.

Jus*_*ner 5

您连接的其中一个字段为null.

无论何时在SQL中连接字符串和空值,结果都为null.

您可以使用COALESCE命令来修复:

declare @strXml nvarchar(max) = ''
set @strXml = '<PromoName>' + (select coalesce(PromoName, '') from #Temp) +
    '</PromoName>'
-- and so on
Run Code Online (Sandbox Code Playgroud)