这是一个示例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
我哪里出错了?我现在真的很困惑。
答案 0 :(得分:3)
您的查询有两个问题。首先,XML属性也是一个XPath维度,因此属性引用应该用斜杠分隔:
XMLQUERY('$GUEST/Person/@Name')
其次,XMLQUERY应该返回XML序列,并且不能将独立属性转换为序列,因此您需要将其转换为SQL类型:
XMLCAST ( XMLQUERY('$GUEST/Person/@Name') AS VARCHAR(20) )