我正在处理一个脚本,该脚本将允许我将xml数据保存在表中。这将用于与也包含xml数据的其他表进行比较。 到目前为止,我已经为简单的节点标签取得了成功,但是在尝试存储列表中的数据时遇到了问题。
XML数据如下:Sample XML Data
我的查询是这样的: XML Query display
我能够将'TypeCode'作为主节点,但是对于值,它始终显示为空白。我不确定如何处理XML列表。
我在想只要能保存数据
''
”作为“值”列中的文本,那么我可以找到另一种解析它的方法,并以更好的方式将其显示为另一个查询。
感谢任何帮助:D谢谢!
答案 0 :(得分:0)
美好的一天,
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 Data Type and Columns (SQL Server)
答案 1 :(得分:0)
关于下一个问题:请勿发布图片。我必须在此输入...请提供消耗性数据,最好作为独立示例来重现您的问题。
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);
签出