Xquery节点值

时间:2010-06-25 02:29:41

标签: sql-server xquery

我需要在表格中获取AccountName的值

<rows>
  <Row xmlns="http://adcenter.microsoft.com/advertiser/reporting/v5/XMLSchema">
    <AccountName value="MA_Yellowpages - AdStore" />
  </Row>
</rows>

我正在使用下面的东西 -

;WITH XMLNAMESPACES('http://adcenter.microsoft.com/advertiser/reporting/v5/XMLSchema' AS ns)
select
temp.query('AccountName[1]').value('@value','varchar(1000)') AS AC
from  yp.dbo.Audit_ApiCallRawXml CROSS APPLY
      RawXML.nodes('/rows/ns:Row') lg(temp)

1 个答案:

答案 0 :(得分:1)

您几乎就在那里 - 但您还需要确保在AccountName节点内的<Row>元素上使用XML命名空间。另外,我会写这样的查询:

;WITH XMLNAMESPACES('http://adcenter.microsoft.com/advertiser/reporting/v5/XMLSchema' AS ns)
SELECT
   temp.value('(ns:AccountName/@value)[1]', 'varchar(1000)') AS AC
FROM
   yp.dbo.Audit_ApiCallRawXml 
CROSS APPLY
   RawXML.nodes('/rows/ns:Row') lg(temp)

这应该有希望。