#sql #xml
#sql #xml
Вопрос:
Код:
DECLARE @dataxml XML = CONVERT(xml ,'<Parentnode><childnode><id>1</id></childnode></Parentnode>')
DECLARE @childnode VARCHAR(50)
SET @childnode = (SELECT DISTINCT
r.value('fn:local-name(.)', 'nvarchar(50)') as t
FROM @dataxml.nodes('//Parentnode/*') AS records(r))
SELECT @childnode
SELECT
t.value('id[1]', 'int') AS id
FROM
@dataxml.nodes('/Parentnode/*[local-name(.)=sql:variable("@childnode")]/*') AS XD(t)
Выходные данные возвращаются как NULL
, но они должны сопровождаться значением id в xml
Что не так в этом коде?
Ответ №1:
Вам просто нужно удалить /*
символы в конце вашей последней строки, вот так:
@dataxml.nodes('/Parentnode/*[local-name(.)=sql:variable("@childnode")]') AS XD(t)
Также мне пришлось удалить $
символ в конце FROM
ключевого слова, но я предполагаю, что это может быть просто опечаткой. Я тестировал это SQL Server 2012.