SQL 2005 最佳实施策略用法(4)_SQL SERVER数据库_黑客防线网安服务器维护基地--Powered by WWW.RONGSEN.COM.CN

SQL 2005 最佳实施策略用法(4)

作者:黑客防线网安SQL维护基地 来源:黑客防线网安SQL维护基地 浏览次数:0

本篇关键词:用法策略实施最佳
黑客防线网安网讯:  nodes() 方法可生成特殊 XML 数据类型的实例,每个实例都将其上下文设置为所选的不同节点。此类 XML 实例支持 query()、value()、nodes() 和 exist() 方法,并且可用在 count(*) 聚合中...
  nodes() 方法可生成特殊 XML 数据类型的实例每个实例都将其上下文设置为所选的不同节点此类 XML 实例支持 query()、value()、nodes() 和 exist() 方法并且可用在 count(*) 聚合中所有其他用法都会导致错误。
  
  示例:nodes() 的用法
  
  假设您希望提取名字不是"David"的作者的姓名,作为由两个列(FirstName 和 LastName)组成的行集。使用 nodes() 和 value() 方法可以达到此目的,如下所示:
  
  SELECT nref.value('first-name[1]', 'nvarchar(50)') FirstName,
            nref.value('last-name[1]', 'nvarchar(50)') LastName
            FROM   T CROSS APPLY xCol.nodes('//author') AS R(nref)
            WHERE  nref.exist('.[first-name != "David"]') = 1
  
  在该示例中,nodes('//author') 会生成一个由对每个 XML 实例的 元的引用组成的行集。通过相对于这些引用对 value() 方法求值,可以获取作者的名字和姓氏。
  
  SQL Server 2000 提供了使用 OpenXml() 从 XML 实例生成行集的功能。您可以指定行集的关系架构,并指定 XML 实例内部的值如何映射到该行集中的列。
  
  示例:对 XML 数据类型使用 OpenXml()
  
  我们可以像下面显示的那样,使用 OpenXml() 来改写上一示例中的查询,方法是:创建一个游标,将各个 XML 实例读入一个 XML 变量,然后向其应用 OpenXML():
  
DECLARE name_cursor CURSOR
            FOR
            SELECT xCol
            FROM   T
            OPEN name_cursor
            DECLARE @xmlVal XML
            DECLARE @idoc int
            FETCH NEXT FROM name_cursor INTO @xmlVal
            WHILE (@@FETCH_STATUS = 0)
            BEGIN
            EXEC sp_xml_preparedocument @idoc OUTPUT, @xmlVal
            SELECT   *
            FROM   OPENXML (@idoc, '//author')
            WITH (FirstName  varchar(50) 'first-name',
            LastName   varchar(50) 'last-name') R
            WHERE  R.FirstName != 'David'
            EXEC sp_xml_removedocument @idoc
            FETCH NEXT FROM name_cursor INTO @xmlVal
            END
            CLOSE name_cursor
            DEALLOCATE name_cursor
    黑客防线网安服务器维护方案本篇连接:http://www.rongsen.com.cn/show-11259-1.html
网站维护教程更新时间:2012-03-21 03:18:58  【打印此页】  【关闭
我要申请本站N点 | 黑客防线官网 |  
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479

footer  footer  footer  footer