Sql server 获取每个XML节点的值并将其设置为参数

Sql server 获取每个XML节点的值并将其设置为参数,sql-server,xml,sql-server-2008,Sql Server,Xml,Sql Server 2008,如何使用SQLServer2008在每个XML节点中设置参数 我是SQL新手,我有这样的XML数据 Set @xml='<root><name>John </name><age>8</age></root>' Set@xml='John 8' 我需要在参数中设置节点,的值。例如: Set @name='get value of node <name>' Set @age='the value of <a

如何使用SQLServer2008在每个XML节点中设置参数

我是SQL新手,我有这样的XML数据

Set @xml='<root><name>John </name><age>8</age></root>'
Set@xml='John 8'
我需要在参数中设置节点
的值。例如:

Set @name='get value of node <name>'
Set @age='the value of <age>'
Set@name='get节点值'
设置@age='的值'

这可能吗?谢谢

如果我正确地理解了这一点,那么您将得到XML中的参数作为键值对。您试图实现的是将值读入fitting变量。试着这样做:

DECLARE @xml XML;
SET @xml='<root><name>John </name><age>8</age></root>';

DECLARE @name NVARCHAR(100);
DECLARE @age INT;

SET @name=@xml.value('(/root/name)[1]','nvarchar(max)');
SET @age =@xml.value('(/root/age)[1]','int');

SELECT @name,@age;

其核心思想是使用
XQuery
-表达式
(/root/*[local-name()=sql:variable(@nodeName”))[1]
来选择第一个节点的值,其中元素的名称类似于给定的参数,您要在多个字符串中替换
的任何实例,通过存储在变量中的XML中的各个元素值。。。对的或者,您想获取XML中任何元素的元素值,并替换这些字符串中出现的任何标记吗?“我需要在参数中设置node的值”,这些参数我认为他指的是
@name
@age
变量。我的理解是:用XML中元素的值替换变量中出现的
。但我可能错了。嗯,我不知道。。。在我看来,您提到的句子好像我想从
中读取值,并将其洗牌到变量中。我把这个集合@name='get value of node'放在上面的方式。。。我们将看到:-)旁注:选择
(/root/name)[1]
等的值不是更容易吗?我的意思是更少的文字:)@TT。你完全正确。。。请记住,节点的名称可能会以一般方式传入。但在这种情况下,所有节点名称都是已知的。。。我将编辑我的答案,谢谢@userMJ我很高兴读到这篇文章!请允许我一个提示:如果这对您有效,请勾选验收检查(票数计数器旁边的一个勾选符号),将此问题标记为已解决。谢谢!
DECLARE @nodeName NVARCHAR(100)='name';
SET @name=@xml.value('(/root/*[local-name()=sql:variable("@nodeName")])[1]','nvarchar(max)');