SQL Server 2008:动态 XML 查询中的 Return 为空

SQL Server 2008: Null Return in Dynamic XML Query

我有一组动态查询 return XML 作为 varchars,见下文。

示例查询:

set @sqlstr = 'Select ''<?xml version="1.0" encoding="windows-1252" ?>'' + ''<File_Name><Location>'' + (Select a,b,c from table for xml path(''Row'')) + </Location></File_name>'''

exec(@sqlstr)

select a,b,c ... 查询为 NULL 之前,这很有用。然后我没有收到你期望的外部元素:

<?xml version="1.0" encoding="windows-1252"><File_Name><Location><Row></Row></Location></File_name>

我收到的只有NULL

经过一些谷歌搜索后,我发现问题是 NULL 结果的串联是一个完整的 NULL 结果。但是,我找不到一种解决方案可以满足我的预期结果。

我试过了(不是说我试对了)

IsNull(Exec(@sqlstring),'*blank elements*')
xsnil (doesn't seem to work in dynamic queries)
@result = exec(@sqlstring) then isnull and select

谁有更好的解决方案? (最好是小的,因为有多个这样的查询)

我想你需要这样的东西:

set @sqlstr = 'Select ''<?xml version="1.0" encoding="windows-1252" ?><File_Name><Location>'' + (Select IsNull(a, '') as a, IsNull(b, '') as b,IsNull(c, '') as c from table for xml path(''Row'')) + </Location></File_name>'''

exec(@sqlstr)