从XML列中选择值

时间:2010-12-20 13:29:53

标签: xml sql-server-2005

这是我表格的结构

CREATE TABLE [dbo].[TableA]
(
    [ObjectID] [int] IDENTITY(1,1) NOT NULL,
    [CGPracticeCode] [varchar](5) NULL,
    [TotalAmt] [decimal](11, 2) NULL,
    [SplitAmt] [xml] NULL,
)

SplitAmt列中的值采用以下格式,行数不得变化

'<Values>
  <Row>
    <PracticeCode>BE9</PracticeCode>
    <Value>20</Value>
  </Row>
  <Row>
    <PracticeCode>BEA</PracticeCode>
    <Value>3</Value>
  </Row>
</Values>'

现在如何获得这样的值...(重复前3列没问题)

ObjectID, CGPracticeCode, TotalAmt, PracticeCode, [Value]

1 个答案:

答案 0 :(得分:0)

查看this article by Alex Homer

要返回可以使用的第一个Row元素:

select a.ObjectId, 
       a.CGPracticeCode, 
       a.TotalAmt, 
       a.SplitAmt.value('(/Values/Row/PracticeCode)[1]', 'nvarchar(50)') as PracticeCode, 
       a.SplitAmt.value('(/Values/Row/Value)[1]', 'int') as [Value]
from [dbo].[TableA] a