выбор буквенно-цифрового узла в XQuery - PullRequest
0 голосов
/ 09 ноября 2018

у меня есть этот 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 голосов
/ 09 ноября 2018

С Правила именования XML , элементы XML должны соответствовать следующим правилам именования:

  • Имена элементов чувствительны к регистру
  • Имена элементов должны начинаться с буквы или подчеркивания
  • Имена элементов не могут начинаться с букв xml (или XML, или Xml и т. Д.)
  • Имена элементов могут содержать буквы, цифры, дефисы, подчеркивания и Периоды
  • Имена элементов не могут содержать пробелы
  • Можно использовать любое имя, слова не зарезервированы (кроме xml).

Итак, имена элементов должны начинаться с буквы или подчеркивания. На SQL Server 2016 SP1 ваш XML является событием недопустимым и не может быть выполнен:

enter image description here

Вам нужно либо восстановить вашу строку, чтобы она была допустимым XML, либо запросить данные, используя другой метод (например, функцию SQL CLR для реализации поддержки выражений регулярных выражений или разделения узлов).

...