如何在表中存储XML数据列表



我正在编写一个脚本,该脚本将允许我将xml数据保存在表中。这将用于与同样包含xml数据的其他表进行比较。到目前为止,我已经成功地使用了简单的节点标记,但在尝试存储列表中的数据时遇到了问题。

XML数据如下所示:示例XML数据

我的问题是:XML查询显示

我可以获得"TypeCode"作为主节点,但对于值,它总是显示为空。我不知道如何用XML处理列表。

我在想只要我能保存数据">
"作为Value列中的文本,然后我可以找到另一种方法来解析它,并以更好的方式将其显示为另一个查询。

感谢您的帮助:D谢谢!

对于您的下一个问题:请不要发布图片。我不得不输入…请提供消耗品数据,最好作为独立示例来重现您的问题。

DECLARE @xml XML=
'<Codes>
<TypeCodes type="list">
<item key="A" text="A1"/>
<item key="C" text="C1"/>
</TypeCodes>
</Codes>';
--the Xml "as is" 
SELECT @xml;
--fetch one value with XQuery
SELECT @xml.value('(/Codes/TypeCodes/item[@key="A"]/@text)[1]','varchar(10)');
--fetch all items as list
SELECT @xml.value('(/Codes/TypeCodes/@type)[1]','varchar(10)') AS TypeCode_type
,i.value('@key','varchar(10)') AS item_key
,i.value('@text','varchar(10)') AS item_text
FROM @xml.nodes('/Codes/TypeCodes/item') A(i);

查看

你好,

SQL Server包含特殊的数据类型XML,您应该使用它来存储XML数据。

declare @MyXML XML = '
<codes>
<Type>
<Item key="1" />
</Type>
</codes>
'
select @MyXML

以下是使用表格的示例:

DROP TABLE IF eXISTS T;
CREATE TABLE T(MyXML XML)
GO
INSERT T(MyXML) values ('
<codes>
<Type>
<Item key="1" />
</Type>
</codes>
')
SELECT * FROM T
GO

有关更多信息,请查看此文档:XML数据类型和列(SQL Server(

最新更新