1

这是一个示例 XML。在这个 XML 中,我想选择名称“Marc Intes”,但我遇到了问题。

<Person Name="Marc Intes">

这是我的查询方式,这个 XML 文档位于名为 GUEST 的列下。

XMLQUERY('$GUEST/Person@Name')

但它给了我一个错误说:

SQL16002N  An XQuery expression has an unexpected token "@" following 
"ST/Person". Expected tokens may include: "". Error QName=err:XPST0003.  
SQLSTATE=10505

我哪里做错了?我现在真的很困惑。

4

1 回答 1

4

您的查询有两个问题。首先,XML 属性也是一个 XPath 维度,所以属性引用应该用斜杠分隔:

XMLQUERY('$GUEST/Person/@Name')

其次,XMLQUERY 应该返回一个 XML 序列,而一个独立的属性不能做成一个序列,所以你需要将它转换为 SQL 类型:

XMLCAST ( XMLQUERY('$GUEST/Person/@Name') AS VARCHAR(20) )
于 2013-09-18T15:28:08.040 回答