加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

将表格列中的XML粉碎成SQL Server中的视图

发布时间:2020-12-16 07:48:43 所属栏目:百科 来源:网络整理
导读:我目前有这个代码,它将 XML存储在名为Storage的 XML类型列中,名为Storage. CREATE TABLE Storage( ID INT IDENTITY(1,1) PRIMARY KEY,data XML NOT NULL)GOINSERT INTO Storage(data) VALUES('footballteams team manager="Benitez" nameLiverpool/name grou
我目前有这个代码,它将 XML存储在名为Storage的 XML类型列中,名为Storage.
CREATE TABLE Storage
(
    ID INT IDENTITY(1,1) PRIMARY KEY,data XML NOT NULL
)

GO

INSERT INTO Storage(data) 
VALUES('<footballteams>   
    <team manager="Benitez">     
        <name>Liverpool</name>     
        <ground>Anfield</ground>   
    </team>   
    <team manager="Mourinho">     
        <name>Chelsea</name>     
        <ground>Stamford Bridge</ground>   
    </team>   
    <team manager="Wenger">     
         <name>Arsenal</name>     
         <ground>Highbury</ground>   
    </team> 
</footballteams>');

我想创建一个名为Football View的视图,它将数据分解并以表格形式显示:FootballView(TeamName,Manager,Ground).

我之前使用.nodes()方法将完整文档粉碎成表格列,但在创建视图时似乎更具挑战性(我有使用视图的原因).问题是之前我只是在一个变量@input上调用.nodes,它是DECLARE,因为xml =’xmlcontent’但是有了这个不能完成的视图,我想解析存储表列中包含的XML.

有任何想法吗?提前致谢.

编辑:

以前,如果我已经切碎到表中,这将是我使用的代码:

SELECT     
        TeamName = Foot.value('(name)[1]','varchar(100)'),Manager = Foot.value('(@manager)',Ground = Foot.value('(ground)[1]','varchar(100)')   
FROM     
        @input.nodes('/footballteams/team') AS Tbl(Foot)

EDIT2:这是我期望的输出.

你需要使用CROSS APPLY
SELECT     
        TeamName = Foot.value('(name)[1]','varchar(100)')   
FROM    
    Storage S 
        CROSS APPLY data.nodes('/footballteams/team') AS Tbl(Foot)

CROSS APPLY和OUTER APPLY允许您有效地加入当前数据集中的XML集合.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读