尝试从一个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)和元素的名称。