我公司的“联系人”表中有一个字段。在该表中,有一个XML类型的列。该列包含有关特定联系人的混杂数据。例如。查询SQLServer 2005中的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节点,并存在()来测试节点是否保存我正在搜索的值。
有谁知道更好的方式来查询XML列?
耗时,你的意思是服务器需要很长时间才能做出响应,或者需要花费很多精力来编写查询? – Espo 2008-09-09 14:59:53
我的意思是t需要很长时间才能让服务器返回结果 – nialljsmith 2008-09-12 16:01:20