我正在编写一个脚本,该脚本将允许我将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(