1
我想根据SQL中的列值查询XML。根据SQL中的列值查询XML
我的XML是如下
declare @xmlValue xml =
'<Accounts>
<Account>
<ID>1</ID>
<Name>Alex</Name>
<Age>10</Age>
</Account>
<Account>
<ID>2</ID>
<Name>Richard</Name>
<Age>12</Age>
</Account>
<Account>
<ID>3</ID>
<Name>Shane</Name>
<Age>15</Age>
</Account>
</Accounts>';
现在我知道我可以查询标识的XML,如果我有一个恒定的编号是这样的:
select @xmlValue.query('/Accounts[1]/Account[./ID/text()="2"]');
而且,我可以使用sql:variable
像下面,万一我有一个变量:
declare @ID int
set @ID = 1
select @xmlValue.query('/Accounts[1]/Account[./ID/text()=sql:variable("@ID")]');
现在,我有一个表#tmpTable
与XML列(名为xmlValue
)。 我想查询#tmpTable
与加盟Account
表,并从那里得到的AccountID,有点像这样:
-- This does not work
select xmlValue.query('/Accounts[1]/Account[./ID/text()=a.AccountId]') as XMLResult
from #tmpTable tmp
inner join Accounts a on tmp.Id = a.Id
where a.Active = 1
我怎样才能做到这一点?任何帮助将不胜感激。
感谢。有效 :) –