在 XQuery 中选择字母数字节点

selecting alpha numeric node in XQuery

我有这个 XQuery

声明@XML xml

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

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

我一直在尝试 select 1row2 时收到错误消息。

这个错误

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

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

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

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

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

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