【发布时间】:2013-01-09 11:37:18
【问题描述】:
我有一个包含 XQuery 表达式的表。我想为给定的 XML 数据结构评估每一行的表达式。我正在尝试这个。
DECLARE @somexml xml
SET @somexml = '<root><nodeA>true</nodeA><nodeB>false</nodeB></root>'
SELECT
@somexml.query('sql:column("af.Expression")' ) AS Fee,
[af].Expression
FROM
[AerialFees] af
Expression 列包含 NVARCHAR(MAX) 类型的值,例如:
- xs:boolean(/root[1]/nodeA[1])
执行此SELECT 时,表达式不会被计算,而是返回表达式本身(顺便说一句,XML 类型)
Fee Expression
==================================================
xs:boolean(/root[1]/nodeA[1]) xs:boolean(/root[1]/nodeA[1])
如果将 @somexml.query('sql:column("af.Expression")' ) 替换为实际表达式 @somexml.query('xs:boolean(/root[1]/nodeA[1])' ),则表达式得到正确计算。
但我怎样才能使上述工作?
【问题讨论】:
-
我的错,忘了最后一个标签
-
您可以使用 XSLT 3.0(不是 XQuery)的新
<xsl:evaluate>指令。见:w3.org/TR/xslt-30/#element-evaluate
标签: sql sql-server xml xpath xquery