我正在使用 SQL Server 2008 R2 和 ASP.NET 3.5。我在 SQL 端以 XML 形式存储数据表 (.NET)。列的数据类型为 XML。
这是将 XML 存储在 SQL Server 的表列中的示例。
<container>
<NewDataSet>
<Containers>
<BARCODE>680812</BARCODE>
<CATEGORYID>114</CATEGORYID>
<NAME>KS000147</NAME>
<GWT>4.640</GWT>
<NWT>4.640</NWT>
<LAM>30.00</LAM>
<QTY>2</QTY>
<QUANTITY>1</QUANTITY>
<REMARKS>HM</REMARKS>
</Containers>
<Containers>
<BARCODE>680813</BARCODE>
<CATEGORYID>114</CATEGORYID>
<NAME>KS000147</NAME>
<GWT>4.680</GWT>
<NWT>4.680</NWT>
<LAM>30.00</LAM>
<QTY>2</QTY>
<QUANTITY>1</QUANTITY>
<REMARKS>HM</REMARKS>
</Containers>
<Containers>
<BARCODE>680814</BARCODE>
<CATEGORYID>114</CATEGORYID>
<NAME>KS000147</NAME>
<GWT>4.490</GWT>
<NWT>4.490</NWT>
<LAM>30.00</LAM>
<QTY>2</QTY>
<QUANTITY>1</QUANTITY>
<REMARKS>HM</REMARKS>
</Containers>
</NewDataSet>
</container>
现在我想以表格形式获取此 XML。如何在 SQL 中编写查询以获取以下表格格式的 XML? IE。
BARCODE | CATEGORYID |NAME |GWT |NWT |LAM |QTY |QUANTITY |REMARKS
680814 | 114 |KS000147 |4.490 |4.490 |30.00 | 2 | 1 |HM
如果您需要更多详细信息,请告诉我。
你可以尝试这样的事情:
SELECT
Barcode = Container.value('(BARCODE)[1]', 'int'),
CategoryID = Container.value('(CATEGORYID)[1]', 'int'),
Name = Container.value('(NAME)[1]', 'varchar(50)'),
GWT = Container.value('(GWT)[1]', 'decimal(10, 3)'),
NWT = Container.value('(NWT)[1]', 'decimal(10, 3)'),
LAM = Container.value('(LAM)[1]', 'decimal(10, 3)'),
QTY = Container.value('(QTY)[1]', 'int'),
Quantity = Container.value('(QUANTITY)[1]', 'int'),
Remarks = Container.value('(REMARKS)[1]', 'varchar(50)')
FROM
dbo.YourTableHere
CROSS APPLY
XmlColumnHere.nodes('/container/NewDataSet/Containers') AS T(Container)
WHERE
ID = 1
这将产生类似这样的输出(对于给定的示例数据):
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)