在SQL Server中将XML从表列分解到视图中
我目前有一段代码,它将XML存储到一个名为data的XML类型列中,该列位于一个名为Storage的表中在SQL Server中将XML从表列分解到视图中,sql,xml,views,shred,Sql,Xml,Views,Shred,我目前有一段代码,它将XML存储到一个名为data的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">
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>');
EDIT2:这是我期望的输出
您需要使用
交叉应用
SELECT
TeamName = Foot.value('(name)[1]', 'varchar(100)'),
Manager = Foot.value('(@manager)', 'varchar(100)'),
Ground = Foot.value('(ground)[1]', 'varchar(100)')
FROM
Storage S
CROSS APPLY data.nodes('/footballteams/team') AS Tbl(Foot)
交叉应用
和外部应用
允许您有效地加入当前数据集中的XML集合 你能把你用来分解成列的代码,以及你是如何转换它的。你期望得到什么样的输出?把这个查询放在视图中有什么问题?问题是之前我刚刚在一个变量@input上调用了.nodes,这个变量被声明为xml='xmlcontent',但是在视图中这是做不到的,我想解析存储表列中包含的XML。我可以问一下,cross和outer apply之间的区别是否也包括null?@user1320771-是两种表单上的页面,包括这些区别。
SELECT
TeamName = Foot.value('(name)[1]', 'varchar(100)'),
Manager = Foot.value('(@manager)', 'varchar(100)'),
Ground = Foot.value('(ground)[1]', 'varchar(100)')
FROM
Storage S
CROSS APPLY data.nodes('/footballteams/team') AS Tbl(Foot)