SQL Server: SQL 2005 XML查询例子
2010-09-21 14:23
288 查看
SQL Server 2005 新增的一个特性是对 XML 的支持的增强,好多文章都在鼓吹 XML 是如何如何的有用,但惭愧的是我学习了好几年的数据库,很少在实际应用中触碰过 XML,因为用户很少有这方面的需求。最近用户给了一段类似下面结构的 XML。
declare @xdoc xml set @xdoc = '<conn>
<mysql servername="192.168.1.120,3306">
<user name="root" password="" />
<user name="dba" password="" />
<user name="user" password="" />
</mysql> <mssql servername="192.168.1.110,1433">
<user name="sa" password="" />
<user name="dba" password="" />
<user name="user" password="" />
</mssql> <excel id="1" path="c:\database\" filename="source1.xls" />
<excel id="2" path="d:\database\" filename="source2.xls" />
<excel id="3" path="e:\database\" filename="source3.xls" />
</conn>
'
具体的要求就是:在 SQL 2005 中编写一个查询,取出 excel id=1 时的 path & filename。这个需求提醒了我,XML 在数据库中的一个常用需求就是取出 XML 节点中参数的值。 1. SQL 2005 XML 取出节点数据方法一。
select excel_path = t.c.value('@path' ,'varchar(255)')
,excel_name = t.c.value('@filename' ,'varchar(255)')
from @xdoc.nodes('/conn/excel') t (c)
where t.c.value('@id', 'int') = 1
excel_path excel_name
---------------- -----------
c:\database\ source1.xls
2. SQL 2005 XML 取出节点数据方法二。
select excel_path = @xdoc.value('(/conn/excel[@id="1"]/@path)[1]', 'varchar(255)')
,excel_name = @xdoc.value('(/conn/excel[@id="1"]/@filename)[1]', 'varchar(255)')
excel_path excel_name
---------------- -----------
c:\database\ source1.xls
3. SQL 2005 XML 取出节点数据方法三。
该方法是方法二的改进,我们可以在 xml.value() 函数中使用 sql:variable() 来为 XML 节点中的 id 提供一个动态的参数。
declare @xdoc xml set @xdoc = '<conn>
<mysql servername="192.168.1.120,3306">
<user name="root" password="" />
<user name="dba" password="" />
<user name="user" password="" />
</mysql> <mssql servername="192.168.1.110,1433">
<user name="sa" password="" />
<user name="dba" password="" />
<user name="user" password="" />
</mssql> <excel id="1" path="c:\database\" filename="source1.xls" />
<excel id="2" path="d:\database\" filename="source2.xls" />
<excel id="3" path="e:\database\" filename="source3.xls" />
</conn>
'
具体的要求就是:在 SQL 2005 中编写一个查询,取出 excel id=1 时的 path & filename。这个需求提醒了我,XML 在数据库中的一个常用需求就是取出 XML 节点中参数的值。 1. SQL 2005 XML 取出节点数据方法一。
select excel_path = t.c.value('@path' ,'varchar(255)')
,excel_name = t.c.value('@filename' ,'varchar(255)')
from @xdoc.nodes('/conn/excel') t (c)
where t.c.value('@id', 'int') = 1
excel_path excel_name
---------------- -----------
c:\database\ source1.xls
2. SQL 2005 XML 取出节点数据方法二。
select excel_path = @xdoc.value('(/conn/excel[@id="1"]/@path)[1]', 'varchar(255)')
,excel_name = @xdoc.value('(/conn/excel[@id="1"]/@filename)[1]', 'varchar(255)')
excel_path excel_name
---------------- -----------
c:\database\ source1.xls
3. SQL 2005 XML 取出节点数据方法三。
该方法是方法二的改进,我们可以在 xml.value() 函数中使用 sql:variable() 来为 XML 节点中的 id 提供一个动态的参数。
declare @excel_id int set @excel_id = 1 select excel_path = @xdoc.value('(/conn/excel[@id=sql:variable("@excel_id")]/@path)[1]', 'varchar(255)') ,excel_name = @xdoc.value('(/conn/excel[@id=sql:variable("@excel_id")]/@filename)[1]', 'varchar(255)') excel_path excel_name ---------------- ----------- c:\database\ source1.xls
相关文章推荐
- sql server 2005 XML查询例子
- [sql server] 2005的xml查询例子
- Sql Server 2005/2008 SqlCacheDependency查询通知的使用总结
- 【缓存】Sql Server 2005/2008 SqlCacheDependency查询通知的使用总结
- SQLServer 2005 XML 在 T-SQL 查询中的典型应用[转]
- Visual C# 2008+SQL Server 2005 数据库与网络开发-- 9.3 XML相关的SQL语句使用
- [翻译]通过WebService调用SQLXML(SQL Server 2005)
- SQL Server 中的XML支持,查询返回XML,Web访问SQL取XML形式结果
- [翻译]通过WebService调用SQLXML(SQL Server 2005)
- 【SQL精彩语句】SQL SERVER 2005中查询指定节点及其所有子节点的方法(表格形式显示)
- [翻译]通过WebService调用SQLXML(SQL Server 2005)
- SQL Server 2000/2005 常用sql查询整理
- Sql Server 2005/2008 SqlCacheDependency查询通知的使用总结
- 通过WebService调用SQLXML(SQL Server 2005)
- 通过WebService调用SQLXML(SQL Server 2005) [ZT]
- 在SQL Server 2005中用来分析查询计划的SQL
- SQL Server 2005 XML 操作总结(六)属性操作——查询操作
- SQL 综合运用(SQL Server 2005)(别名、时间处理、字段处理、联合查询……)
- 一个简单的演示SQL2005的查询通知的例子
- SQL SERVER 2005 进行XML查询