在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列的主要内容,如果未能解决你的问题,请参考以下文章