在SQL中读取XML列

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在SQL中读取XML列相关的知识,希望对你有一定的参考价值。

尝试从一个XML列中提取值和元素名称。

值只是在一行中,无法提取元素名称。

单元格中的元素是这样的:6161 ......它们是动态生成的。

这是代码:

 SELECT mainSku, r.value('.[1]','NVARCHAR(MAX)') AS 'value', r.query('.') AS 'secondarySku'
  FROM [productsMatrix] 
    CROSS APPLY details.nodes('/') AS x(r)
  WHERE mainSku = 'TP40106'

This is the wrong actual result

This is the result that is pretended

谢谢阅读 :)

答案

你的问题远没有明确,但我的魔法水晶球正在显示,你可能正在寻找这个:

SELECT mainSku
      ,r.value('text()[1]','int') AS [value]
      ,r.value('local-name(.)') AS [secondarySku]
FROM [productsMatrix]
CROSS APPLY details.nodes('/*') AS x(r)
WHERE mainSku = 'TP40106'

假设:

你的表[productsMatrix]有一个名为details的XML列。此列包含没有根节点的XML,只包含名称为<AC486>的XML元素列表。

CROSS APPLY上的.nodes()将返回所有第一级节点的列表,而查询将选择内容(text()-node)和元素的名称。

以上是关于在SQL中读取XML列的主要内容,如果未能解决你的问题,请参考以下文章

通过 PL SQL 读取 XML(存储在 Long 变量中)

在java中读取XML数据库列

如何使用 openjson 读取存储在 SQL Server 中的 Json 列下方?

spark关于join后有重复列的问题(org.apache.spark.sql.AnalysisException: Reference '*' is ambiguous)(代码片段

在 SQL 中读取 XML BOOLEAN 值

从 XML 声明片段获取 XML 编码:部分内容解析不支持 XmlDeclaration