sql-server - SQL 服务器 2008 : Null Return in Dynamic XML Query

标签 sql-server sql-server-2008 for-xml-path

我有一组动态查询,它们将 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/

相关文章:

sql-server - Microsoft SQL Server 错误 18056,登录失败密码不匹配

sql - 使用 OLE DB 源编辑器在 SSIS 上使用时态表

sql - 这不会返回任何内容。为什么?

database - 使用 sql 文件填充 ms sql

sql - 我想以分层形式生成 XML 文件

sql - 在 SQL Server 上生成下一个字母数字代码

sql - 如何合并 SQL Server 中多行的数据

sql - 数据库设计-如何在同一个表中拥有主键的外键?

sql-server - 根据条件消除 XML 中的行