使用SQL从XML中提取相关数据

使用SQL从XML中提取相关数据,sql,Sql,我以前没有在这里问过任何问题,所以请容忍我 我需要使用存储在数据库字段中的SQL提取一些XML。我以前从来没有这样做过,所以我在这里使用了各种不同的问题来达到这个目的。然而,数据的结构方式似乎无法提取我需要的内容 XML的格式与下面的类似(我简化并重命名了标记,我无法控制XML或数据库结构) 我用过这个方法 SELECT DISTINCT ID , i.c.value(‘(//wf:accholderdetails/wf:starddate/text()[1]’,’varcha

我以前没有在这里问过任何问题,所以请容忍我

我需要使用存储在数据库字段中的SQL提取一些XML。我以前从来没有这样做过,所以我在这里使用了各种不同的问题来达到这个目的。然而,数据的结构方式似乎无法提取我需要的内容

XML的格式与下面的类似(我简化并重命名了标记,我无法控制XML或数据库结构)

我用过这个方法

SELECT DISTINCT 
    ID
    , i.c.value(‘(//wf:accholderdetails/wf:starddate/text()[1]’,’varchar(100)’) as startdate
    , i.c.value (‘(//wf:accdetails/wf:balance/text())[1]’,’varchar(100)’) as balance
FROM 
    TABLE T
    CROSS APPLY RESULT.nodes(‘//wf:acc’) as i(c)
WHERE 
    ID = ‘’
它返回一行相关数据,就像我想要的一样,但只返回第一行,不返回任何其他数据行

何处为

SELECT DISTINCT
    ID
    , i.c.value(‘(wf:balance/text())[1]’,’varchar(100)’) as  balance
    ,j.c.value(‘(wf:startdate/text())[1]’,’varchar(100)’) as startdate
FROM 
    TABLE t
    CROSS APPLY RESULT.nodes(‘//wf:accdetails’) as i(c)
    CROSS APPLY RESULT.nodes(‘//wf:accholder’) as j(c)
WHERE 
    ID = ‘’
返回所有数据行,但复制每个项目,从而无法区分哪些数据与哪个帐户相关


非常感谢您的帮助!如果你需要进一步的澄清,让我知道。提前谢谢你

这应该让你开始了

SELECT    
    i.c.query('(./accholder/startdate/text())') as startdate
    ,i.c.query ('(./accdetails/balance/text())') as 'default.bal'
    ,i.c.query ('(./delinquent/bal/text())') as 'delinquent.bal'
    ,COALESCE(convert(varchar(10), i.c.query('data(./acchistory/ah/@code)')),'') as 'acchistory.ah.code'
FROM 
    @myxml.nodes('//acc') as i(c)
它返回:

09/10/15    90  123 a s

这应该让你开始

SELECT    
    i.c.query('(./accholder/startdate/text())') as startdate
    ,i.c.query ('(./accdetails/balance/text())') as 'default.bal'
    ,i.c.query ('(./delinquent/bal/text())') as 'delinquent.bal'
    ,COALESCE(convert(varchar(10), i.c.query('data(./acchistory/ah/@code)')),'') as 'acchistory.ah.code'
FROM 
    @myxml.nodes('//acc') as i(c)
它返回:

09/10/15    90  123 a s

是MS SQL Server吗?
ID
来自哪里?表中是否还有其他列包含XML数据?表的结构是什么?您使用的是哪些DBMS?MS SQL Server。Microsoft Management Studio.ID包含在表中,但未存储为XML。它是否适用于MS SQL Server?ID从何而来?表中是否还有其他列包含XML数据?表的结构是什么?您使用的是哪些DBMS?MS SQL Server。Microsoft Management Studio.ID包含在表中,但未存储为XML。很抱歉,答复太晚。我设法用你的答案作为获得我想要的结果的起点。谢谢:)很抱歉回复晚了。我设法用你的答案作为获得我想要的结果的起点。谢谢:)