表TSQL的xml名称/值
我有下表表TSQL的xml名称/值,xml,tsql,Xml,Tsql,我有下表 Id | XML 1 XML1 2 XML2 3 XML3 每个XML都有以下结构: <aaa> <row name="a" value="1" /> <row name="b" value="2" /> <row name="c" value="3" /> </aaa> <aaa> <row name="a" value="3" /> <row name
Id | XML
1 XML1
2 XML2
3 XML3
每个XML都有以下结构:
<aaa>
<row name="a" value="1" />
<row name="b" value="2" />
<row name="c" value="3" />
</aaa>
<aaa>
<row name="a" value="3" />
<row name="b" value="4" />
<row name="c" value="5" />
</aaa>
<aaa>
<row name="a" value="10" />
<row name="b" value="20" />
<row name="c" value="30" />
</aaa>
我用TSQL写了一些东西,但我无法从每个xml中获得完整的参数
SELECT [Id], [XML] FROM table
SELECT
[XML].value('(aaa/row//@name)[1]','varchar(20)') AS 'NAME',
[XML].value('(aaa/row//@value)[1]','varchar(20)') AS 'VALUE'
FROM table
下面是一个XML all-in-one变量的示例,以及选择字段的结果代码
DECLARE @xmlIN XML = '<TableData>
<aaa>
<row name="a" value="1" />
<row name="b" value="2" />
<row name="c" value="3" />
</aaa>
<aaa>
<row name="a" value="3" />
<row name="b" value="4" />
<row name="c" value="5" />
</aaa>
<aaa>
<row name="a" value="10" />
<row name="b" value="20" />
<row name="c" value="30" />
</aaa>
</TableData>'
SELECT t.col.value('@name', 'VARCHAR(25)') [name],
t.col.value('@value', 'VARCHAR(25)') [Value]
FROM @xmlIn.nodes('//TableData/aaa/row') AS t (col)
DECLARE@xmlIN-XML='1〕
'
选择t.col.value(“@name”,“VARCHAR(25)”)[name],
t、 col.value('@value','VARCHAR(25)')[value]
从@xmlIn.nodes('//TableData/aaa/row')作为t(col)
然后,要以您描述的格式获取数据,您必须进行某种透视。这应该可以:
SELECT
[XML].value('(aaa/row/@value)[1]','varchar(20)') AS a,
[XML].value('(aaa/row/@value)[2]','varchar(20)') AS b,
[XML].value('(aaa/row/@value)[3]','varchar(20)') AS c
FROM table
元素数是否为常量,例如,如示例中的始终为3?好的,请检查我发布的答案并让我知道。其工作正常,但如何将其用于表中的行创建表名称(Id int,XML,);插入到表_名称值(1,,)插入到表_名称值(2,,)插入到表_名称值(3,,),而不将每一行写入变量?–
SELECT
[XML].value('(aaa/row/@value)[1]','varchar(20)') AS a,
[XML].value('(aaa/row/@value)[2]','varchar(20)') AS b,
[XML].value('(aaa/row/@value)[3]','varchar(20)') AS c
FROM table