代码:
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
,但它应带有xml
此代码中有什么问题?
答案 0 :(得分:1)
您只需删除最后一行末尾的/*
个字符,如下所示:
@dataxml.nodes('/Parentnode/*[local-name(.)=sql:variable("@childnode")]') AS XD(t)
此外,我必须删除$
关键字末尾的FROM
字符,但我猜这可能只是一个错字。我测试的是SQL Server 2012。