8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

带命名空间的 T-Sql xml 查询

Lucas Tinoco 1月前

48 0

这是对 T-Sql xml 查询的后续问题如果我向 xml 数据添加命名空间,则不会再返回任何内容。DECLARE @xVar XMLSET @xVar = '

这是一个后续问题

T-Sql xml 查询

如果我向 xml 数据添加命名空间,则不会再返回任何内容。

DECLARE @xVar XML
SET @xVar = 
  '<ReportData ObjectId="123" xmlns="http://ait.com/reportdata">
  <ReportId>AAAA-BBBB-CCCCC-DDDDD</ReportId>
  <DocId>100</DocId>
  <ReportName>Drag Scraper Troubleshooting</ReportName>
  <DocType>Name</DocType>
  <StatusId>1</StatusId>
  <AuthorId>1</AuthorId>
   </ReportData>'

SELECT [ReportId]= reportdata.item.value('.', 'varchar(40)') 
FROM   @xVar.nodes('/ReportData/ReportId[1]') AS reportdata(item) 

上述查询未返回任何内容。其次,如何在一次选择中选择所有元素并返回包含所有元素作为字段的行?

我想要返回一个构造如下的记录:

ReportId              | DocId | ReportName | 
AAAA-BBBB-CCCCC-DDDDD | 100   | AAAA-BBBB-CCCCC-DDDDD |
帖子版权声明 1、本帖标题:带命名空间的 T-Sql xml 查询
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Lucas Tinoco在本站《t-sql》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 如果我的假设是正确的,并且您想要列出 XML 文档中的所有 ReportData 元素,并希望它们的子元素作为不同的列,那么您可以查看如下内容:

    ;WITH XMLNAMESPACES(DEFAULT 'http://ait.com/reportdata')
    SELECT 
        [ReportId] = reportdata.item.value('(./ReportId)[1]', 'varchar(40)') 
      , [DocId] = reportdata.item.value('(./DocId)[1]', 'varchar(40)') 
      , [ReportName] = reportdata.item.value('(./ReportName)[1]', 'varchar(40)') 
      , [DocType] = reportdata.item.value('(./DocType)[1]', 'varchar(40)') 
      , [StatusId] = reportdata.item.value('(./StatusId)[1]', 'varchar(40)') 
      , [AuthorId] = reportdata.item.value('(./AuthorId)[1]', 'varchar(40)') 
    FROM @xVar.nodes('//ReportData') AS reportdata(item)
    

    我需要看一下清理命名空间声明,但它似乎对我有用......

    编辑:按照 Martin 的建议,用 WITH XMLNAMESPACES 子句修改了我的答案。:)

返回
作者最近主题: