SQL: Cross Apply ,nodes ,xpath 实现扁平查找

最近搜索项目需要实现下面的逻辑:

很多个客户端clients 搜索完数据,一xml的形式保存在数据库中RawData{xml1,xml2,....},

每个xml_i都包含上万条搜索记录,xml_i和xml_j容易出现重复记录,

这些记录都要保存到清晰数据库CustomerDB中,xml_i也有可能会和CustomerDB中的数据重复

实现上面功能主要用到的关键技术是 Cross Apply ,nodes ,xpath 

下面是演示代码

Insert Country (Name,ISO2Code,ISO3Code)
select distinct
co.value('(Name/text())[1]','varchar(100)'),
co.value('(ISO2Code/text())[1]','varchar(2)'),
co.value('(ISO3Code/text())[1]','varchar(3)')
from XMLData cross apply RawXml.nodes('/Countries/Country') as Cou(co)
go

posted @ 2012-04-27 19:45  mjg  阅读(339)  评论(0编辑  收藏  举报