赛迪网 > IT技术 数据库 > SQL Server
  IT资讯搜索
 
IT产品搜索
[程序开发][网管世界][网络安全][数据库技术]
[操作系统][嘉宾聊天·在线访谈][活动集锦]
[精彩专题][Symantec专区][订阅IT技术周刊]
[开发论坛][网管论坛][安全论坛][数据库论坛]
[操作系统论坛][Sybase专区][IBM dW技术专区]
[病毒求助][病毒与漏洞播报][文档·源码下载]

SQL 2005 XML最佳实施策略之跨域查询

发布时间:2006.10.23 09:12     来源:microsoft    作者:Shankar Pal

当您的数据同时驻留在关系列和 XML 数据类型列中时,您可能希望编写将关系数据处理和 XML 数据处理结合起来的查询。例如,您可以使用 FOR XML 将关系列和 XML 列中的数据转换为 XML 数据类型实例,然后使用 XQuery 对其进行查询。相反,可以从 XML 值生成行集(请参阅用法),并使用 T-SQL 对其进行查询。

编写跨域查询的更为方便和有效的方法是在 XQuery 或 XML DML 表达式内使用 SQL 变量或列的值:

• 可以在 XQuery 或 XML DML 表达式中,通过 sql:variable() 来使用 SQL 变量的值。

• 可以在 XQuery 或 XML DML 表达式中,通过 sql:column() 来使用关系列中的值。

• 该方法使应用程序可以将查询参数化,如下面的示例所示。然而,不允许在 sql:variable() 和 sql:column() 中使用 XML 和用户定义的类型。

示例:使用 sql:variable() 的跨域查询

下面的查询是对示例:基于 XML 数据类型方法的计算列上的查询中显示的查询进行修改后得到的版本。在该版本中,使用 SQL 变量 @isbn 传入感兴趣的 ISBN。通过将常量替换为 sql:variable(),可以使用该查询来搜索任意 ISBN,而不仅是其 ISBN 为 0-7356-1588-2 的那个。

DECLARE @isbn varchar(20)
SET     @isbn = '0-7356-1588-2'
SELECT  xCol
FROM    T
WHERE   xCol.exist ('/book[@ISBN = sql:variable("@isbn")]') = 1

可以用类似的方式使用 Sql:column(),并且提供附加的好处。可以使用列上的索引来提高效率,这要由基于成本的查询优化器决定。而且,计算列可以存储提升的属性,如基于 XML 数据类型的计算列中所述。

(T114)


[ 发表评论 ] 字体[  ] [ 打印 ] [ 进入博客 ] [ 进入论坛 ]  [ 推荐给朋友 ]
  相关文章
  客户需求反馈表
* 姓  名:
更多资料  了解方案  认识厂商
* 单位名称:
* 联系电话:
* 电子邮件:
  赛迪推荐  
  手机·资费 ·新品·导购·评测·手机资费·宽带
手机搜索  诺基亚 N73 MOTO Z6
  IT产品 ·笔记本·台式机·服务器·打印·投影
IT产品搜索 
  IT技术 ·开发·网管·安全·数据库·操作系统
  信息化 ·热点·专题·访谈·周刊·方案案例
[政务][电信][金融][农业][制造业][中小企业]
[CIO][ERP][协同][IT管理][中间件][电子商务]
[政策][地方][专家][评估][辞典][博客][社区]
· 专题:一路畅通构想曲——让出行不再遭遇堵车
· CIO工作亲历:企业ERP选型不能忽视"选人关"
· 综述:信息化建设给中国监狱带来的各种变化
· 金融业风险管理和法规遵从有五点需考虑的因素
· 保险业CIO关注:该如何建立统一高效的CRM体系
· 调查显示:多数CIO对IT规划仍存在困惑和误解
  博客·论坛 ·曾剑秋·项立刚·Java学习·网管