在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 变量中)
如何使用 openjson 读取存储在 SQL Server 中的 Json 列下方?
spark关于join后有重复列的问题(org.apache.spark.sql.AnalysisException: Reference '*' is ambiguous)(代码片段