Как извлечь значение из столбца XML в SQL SERVER, используя переменную - PullRequest
2 голосов
/ 08 ноября 2019

Я хочу извлечь значение из XML, используя функцию значения XML. Путь значения в этом случае хранится в переменной. Проверьте ниже скрипт

DECLARE @keyPathNg NVARCHAR(max)
DECLARE @xml_col XML
SET @keyPathNg = '/note/to/text()'
SET @xml_col = '<note><to>Tove</to><from>Jani</from><heading>Reminder</heading><body>Dont forghttps://stackoverflow.com/questions/10408445/the-argument-1-of-the-xml-data-type-method-value-must-be-a-string-literalet me this weekend!</body></note>'
select @xml_col.value('(sql:variable("@keyPathNg"))[1]','nvarchar(max)')   ;

Это дает вывод:

/note/to/text()

Однако, вывод должен быть Tove

Я успешно могу извлечь значение, когдаиспользуя жестко закодированный путь вместо переменной, используя приведенный ниже запрос.

select @xml_col.value('(/note/to/text())[1]','varchar(max)')

Как уже упоминалось, в моем случае путь хранится в переменной, пожалуйста, предложите.

Я прочитал этот ответ о переполнении стека Аргумент1 из метода типа данных XML «value» должен быть строковым литералом , но, как отмечено, я не получаю значение переменной в качестве выходного, возможно, я что-то упускаю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...