在XQuery中选择字母数字节点

时间:2018-11-09 06:53:19

标签: sql sql-server tsql xquery-sql

我有这个XQuery

声明@XML xml

set @XML = 
'
<root>
  <row1>
    <value>1</value>
  </row1>
  <1row2>
    <value>2</value>
  </1row2>
</root>
'

select @XML.query('/root/1row2')

我一直在尝试选择1row2时出现白色错误。

此错误

XQuery [query()]: Syntax error near '1', expected a step expression.

似乎当xml节点以数字开头时,我只是一直收到此错误,有没有办法选择所述节点?

1 个答案:

答案 0 :(得分:3)

XML Naming Rules开始,XML元素必须遵循以下命名规则:

  • 元素名称区分大小写
  • 元素名称必须以字母或下划线开头
  • 元素名称不能以字母xml(或XML或Xml等)开头
  • 元素名称可以包含字母,数字,连字符,下划线和 期
  • 元素名称不能包含空格
  • 可以使用任何名称,不保留任何单词(xml除外)。

因此,元素名称必须以字母或下划线开头。在SQL Server 2016 SP1上,您的XML事件无效,并且无法执行:

enter image description here

您需要将字符串修复为有效的XML或使用其他某种技术(例如,用于实现正则表达式表达支持或拆分节点的SQL CLR函数)查询数据。