popomars

博客园 首页 新随笔 联系 订阅 管理
SQLServer 2005支持Xml格式的数据,我们可以利用这个特性将一些非结构化的数据保存在字段中,然后通过XQuery查询处结构化的数据。
例如,我们保存了一个页面的访问控制列表,用Xml格式存储了每个页面可访问的用户,数据表如下
Users                                                   Page
<Root><user name="mars" /><user name="test" /></Root> 1
<Root><user name="mars2" /><user name="test2" /></Root> 2
<Root><user name="mars3" /><user name="test3" /></Root> 3
<Root><user name="mars3" /><user name="test" /></Root> 4
<Root><user name="mars" /><user name="test1" /></Root> 5
NULL NULL
使用如下SQL语句可以查询出用户mars3可访问的的页面:
select * from (
select page,g.username.value('.','varchar(50)') as username
from testxml
CROSS APPLY userss.nodes('/Root/user/@name') as g(username)
) a
where username='mars3'


posted on 2006-12-14 21:02  popomars  阅读(317)  评论(0)    收藏  举报