正在使用属性解析 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;
我目前有一个 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;