我的公司的“联系人”表中有一个字段。在该表中,有一个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 节点,并使用 exist() 来测试节点是否包含我正在搜索的值。
有人知道查询 XML 列的更好方法吗?