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

kla*_*ist 8 xml t-sql

这是一个后续问题

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) 
Run Code Online (Sandbox Code Playgroud)

以上查询什么都不返回.其次,如何在单个选择中选择所有元素并返回包含所有元素作为字段的行?

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

ReportId              | DocId | ReportName | 
AAAA-BBBB-CCCCC-DDDDD | 100   | AAAA-BBBB-CCCCC-DDDDD |
Run Code Online (Sandbox Code Playgroud)

Mar*_*ith 11

看着 WITH XMLNAMESPACES

;WITH XMLNAMESPACES(DEFAULT 'http://ait.com/reportdata')
SELECT [ReportId]= reportdata.item.value('.', 'varchar(40)') 
FROM   @xVar.nodes('/ReportData/ReportId[1]') AS reportdata(item) 
Run Code Online (Sandbox Code Playgroud)