【发布时间】:2014-03-14 23:02:41
【问题描述】:
我正在开发一个 SQL 数据库,我需要一种方法来返回所有附有标签的产品的列表。这是我的 xml 的一个简单示例
<ArrayOfString>
<string>fee</string>
<string>activation</string>
</ArrayOfString>
我还有一个 ProductType 和 ProductID 列。我需要做的是提取某种产品类型的所有条目,并在 xml 列中列出不同的字符串。所以我需要看到的是……
------------------------------------------------
PRODUCTID | TAG | PRODUCT TYPE
------------------------------------------------
1 | fee | 1
1 | activation | 1
2 | fee | 1
3 | fee | 1
所以基本上如果该列中的 xml 有超过 1 个“字符串”节点,我需要知道每个节点,以及它附带的 productID。
我已经尝试使用 Tags.values() 和 Tags.query() 来获取我的值,并且我可以尽可能地接近它返回的值,例如...
------------------------------------------------
PRODUCTID | TAG | PRODUCT TYPE
------------------------------------------------
1 | <string>fee</st| 1
2 | fee | 1
3 | fee | 1
但这会将所有字符串集中在一个视图中...
另外,我试图解决这个问题,因为我可以做到这一点,并且想说
SELECT ProductID, Tags.query('/ArrayOfString/string') AS AttachedTags
FROM dbo.products
WHERE ProductType = 1
ORDER BY AttachedTags
但它说 AttachedTags 不是有效的列名...关于我是否先尝试按某些标签对其进行排序有什么想法吗?
【问题讨论】:
-
嘿,marc_s,抱歉延迟了 - 我使用的是 MSS,感谢您更新我的标签!对于其他任何人,请参阅下面 JamieSee 的回答,了解交叉应用的一个很好的例子
标签: sql sql-server xml