2012-01-18 71 views
3

我怎样才能得到下面的XML文档T-SQL 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,任何想法的称号?

回答

3

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

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

非常感谢 – klashagelqvist 2012-01-18 12:05:12

2

没有必要切碎FROM子句中的XML,如果你只想要一个值。

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