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)
我有一组动态查询 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)