【发布时间】:2012-07-27 04:21:52
【问题描述】:
我想使用 Xquery 从 XML 中获取属性值。
我的 XML 是
<Answers>
<AnswerSet>
<Answer questionId="NodeID">155</Answer>
<Answer questionId="ParentNode" selectedValue="12">Product</Answer>
</AnswerSet>
</Answers>
以下是我的查询。
DECLARE @Field Varchar(100)
DECLARE @Attribute VARCHAR(100)
SET @Field='ParentNode'
SET @Attribute = 'selectedValue'
SELECT ISNULL(PropertyXML.value('(/Answers/AnswerSet/Answer[@questionId=sql:variable("@Field")])[1]','varchar(max)'),'') ,
ISNULL(PropertyXML.value('(/Answers/AnswerSet/Answer[@questionId=sql:variable("@Field")]/sql:variable(@Attribute) )[1]','varchar(max)'),'')
FROM node
WHERE id=155
下面的行与 sql:variable 一起工作正常
ISNULL(PropertyXML.value('(/Answers/AnswerSet/Answer[@questionId=sql:variable("@Field")])[1]','varchar(max)'),'')
但我在下面的行中遇到错误..
ISNULL(PropertyXML.value('(/Answers/AnswerSet/Answer[@questionId=sql:variable("@Field")]/sql:variable(@Attribute) )[1]','varchar(max)'),'')
关于如何在结果中获得attribute(@Attribute) 值的任何想法?
【问题讨论】:
-
什么版本的 SQL Server?如果您使用 .value,则必须是 2005+
标签: sql sql-server tsql xquery-sql