Выбор буквенно-цифрового узла в XQuery

У меня есть этот 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 ответ

Решение

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

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

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

введите описание изображения здесь

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

Другие вопросы по тегам