开发者社区> 问答> 正文

在SQLServer 2005中查询XML列

我公司的“联系人”表中有一个字段。在该表中,有一个XML类型列。该列保存有关特定联系人的杂项数据。例如。

<contact>
<refno>123456</refno>
<special>a piece of custom data</special>
</contact>

contact对于每个联系人,下面的标签可以不同,并且我必须在同一表中的关系数据列旁边查询这些片段。

我曾经使用过类似的构造:

SELECT c.id AS ContactID,c.ContactName as ForeName,
c.xmlvaluesn.value('(contact/Ref)[1]', 'VARCHAR(40)') as ref,    
INNER JOIN ParticipantContactMap pcm ON c.id=pcm.contactid 
AND pcm.participantid=2140
WHERE xmlvaluesn.exist('/contact[Ref = "118985"]') = 1

此方法可以正常运行,但是服务器需要一段时间才能响应。我还研究了使用nodes()函数来解析XML节点,并使用existing()来测试节点是否拥有我要搜索的值。

有谁知道查询XML列的更好方法?

展开
收起
心有灵_夕 2019-12-26 21:41:36 928 0
1 条回答
写回答
取消 提交回答
  • 如果要进行一次写入和大量读取,请在写入时进行分析命中,然后将数据转换为更易于查询的格式。第一个建议是将它们解析为一个相关但独立的表,其中包含名称/值/ contactID列。

    2019-12-26 21:41:52
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载