T-Sql xml查询

时间:2012-01-18 11:57:43

标签: xml tsql

如何在以下xml文档中获取标题

DECLARE @xVar XML
SET @xVar = 
  '<reportdata genre="security" publicationdate="2002" ISBN="0-7356-1588-2">
   <title>Writing Secure Code</title>
   <author>
      <first-name>Michael</first-name>
      <last-name>Howard</last-name>
   </author>
   <author>
      <first-name>David</first-name>
      <last-name>LeBlanc</last-name>
   </author>
   <price>39.99</price>
   </reportdata>'

SELECT [Title]= reportdata.item.value('@title', 'varchar(40)')

FROM   @xVar.nodes('/reportdata') AS reportdata(item)

此查询始终返回null,任何想法?

2 个答案:

答案 0 :(得分:3)

title是元素而不是属性。以下作品。

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

答案 1 :(得分:2)

如果您只想要一个值,则无需在FROM子句中粉碎XML。

SELECT [Title]= @xVar.value('(/reportdata/title)[1]', 'varchar(40)')