Получить значение инструкции по обработке

#sql-server #xml

#sql-сервер #xml

Вопрос:

Как я могу получить значение тега инструкции обработки в SQL Server?

 declare @x XML = 
'<root>
  <entity>
    <?ent LOOKUPS?>
  </entity>
  <entity>
    <?ent STAFF?>
  </entity>
  <entity>
    <?ent SIR?>
  </entity>
</root>';

SELECT x.xml.value('processing-instruction(ent)[1]','varchar(30)')
FROM @x.nodes('/root/entity') x(xml);
 

Оператор select возвращает ошибку:
Сообщение 2225, уровень 16, состояние 1, строка 29
XQuery [value()]: ожидался строковый литерал

Ответ №1:

Вам нужно заключить «ent» в двойные кавычки:

 SELECT x.xml.value('data(processing-instruction("ent")[1])','varchar(30)')
FROM @x.nodes('/root/entity') x(xml);