Sql server 将变量插入到XML节点搜索中
我试图在XML节点查询中插入一个变量,但对语法一无所知 以下是我尝试过的:Sql server 将变量插入到XML节点搜索中,sql-server,xml,tsql,Sql Server,Xml,Tsql,我试图在XML节点查询中插入一个变量,但对语法一无所知 以下是我尝试过的: declare @LineNumber int select @LineNumber = 4 select T.value('(N4/F116)[1]','varchar(30)') from @ClaimXML.nodes('/Envelope/Interchange/Group/Message/Loop2000/Loop2300/Loop2400[LX/F554=@LineNumber]/Loop2420') T
declare @LineNumber int
select @LineNumber = 4
select T.value('(N4/F116)[1]','varchar(30)')
from @ClaimXML.nodes('/Envelope/Interchange/Group/Message/Loop2000/Loop2300/Loop2400[LX/F554=@LineNumber]/Loop2420') Trans(T)
where T.exist('NM1/F98_1[text()="PW"]') = 1
上面的查询不起作用,但是如果我手动插入'4'而不是@LineNumber,它会起作用。如何正确插入@LineNumber标量?只需在注释中添加到解决方案,下面是一个示例来测试这一点:
DECLARE @xml XML=
'<root>
<a id="1" value="a1"/>
<a id="2" value="a2"/>
<a id="3" value="a3"/>
<a id="4" value="a4"/>
<a id="5" value="a5"/>
<a id="6" value="a6"/>
</root>';
--我们可以使用sql:column()
使用列的值(当前行的值)执行相同的操作:
DECLARE @tbl TABLE(SomeColumn INT);
INSERT INTO @tbl VALUES(1),(3),(6);
SELECT t.SomeColumn
,@xml.value('(/root/a[@id=sql:column("SomeColumn")]/@value)[1]','char(2)')
FROM @tbl t;
结果
1 a1
3 a3
6 a6
sql:变量(“@LineNumber”):
1 a1
3 a3
6 a6