提取给定子标签字段组合的xml标记值

时间:2013-05-08 18:33:36

标签: xml sql-server-2008

BZLoans表有一个名为LnXML的列,其中包含XML数据/ 该表还有一个Loanid列,其中存储了loanid。 示例数据显示在下面LoanID = 12345的行中的LnXML字段中:

<Loans>  
<Schedule>
    <PID>4</PID>
           <Amt>2100<dAmt>
</Schedule>
<Schedule>
    <PID>5</PID>
         <Amt>1000</Amt>
</Schedule>
</Loans>

根标签是贷款,下面是带有多个子标签的Schedule标签

我正在寻找一个查询,当指定PID标记值和LoanID值时,该查询将返回Amt标记中的值。

例如,当PID指定为5且LoanID指定为12345时,则应返回查询, PID,LoanID,Amt 5.12345.1000

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

declare @Loanid int = 12345
declare @PID int = 5

select @PID as PID,
       @Loanid as Loanid,
       L.X.value('.', 'int') as Amt
from BZLoans as B
  cross apply B.LnXML.nodes('/Loans/Schedule[PID = sql:variable("@PID")]/Amt') as L(X)
where B.Loanid = @Loanid