正在使用属性解析 SQL 中的 XML 数据

Parsing XML data in SQL with attribute

我目前有一个 XML 我正在从 SQL 中的列中提取格式如下:

<Datas>
   <CHILD value="test" />
</Datas>

我需要一种方法来获取 CHILD 标签中的值,但我遇到了一些问题,我认为这是由于它是一个自关闭标签。如果以这种格式进行格式化,我能够获取数据:

<Datas>
   <CHILD>test</CHILD>
</Datas>

但是,这种格式不是一个选项,因为我从中提取的应用程序不会以这种方式存储它。

我试过以下方法SQL:

select cast(xmlField as xml) xmlField into tmp from (
select '<Datas><CHILD value = "test"/></Datas>' xmlField
) tb
SELECT
xmlField.value('(Datas/CHILD)[1]', 'nvarchar(max)') as Data
FROM tmp
drop table tmp

非常感谢任何帮助。谢谢!

问题不在于它是自动关闭的,而是您想要访问一个属性。对于那些您需要使用前缀为 @:

的属性名称
SELECT xmlField.value('(Datas/CHILD/@value)[1]', 'nvarchar(max)') AS Data
FROM tmp;