在 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 函数以实现正则表达式支持或拆分节点).
我有这个 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 函数以实现正则表达式支持或拆分节点).