我有一组动态查询,它们将 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)
关于sql-server - SQL 服务器 2008 : Null Return in Dynamic XML Query,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40842383/