在SQL中读取XML列

问题描述 投票:1回答:1

尝试从一个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

谢谢阅读 :)

sql-server xml tsql pivot
1个回答
1
投票

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

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)和元素的名称。

© www.soinside.com 2019 - 2024. All rights reserved.