IT技术网www.itjs.cn

当前位置:首页 > 数据库 > SQl Server > SQL Server数据库对XML节点和XML块的操作实例解析

SQL Server数据库对XML节点和XML块的操作实例解析

发布时间:2011-08-22 10:32 来源:未知

SQL Server数据库对XML是如何操作的呢?本文我们主要就介绍这部分内容,包括对XML节点的操作和对XML块的操作等,接下来就让我们一起来了解一下这部分内容。

1. 检查XML节点是否存在

SELECT xmlContent.exist('/Samples/Sample'),      * FROM xmlTable  WHERE xmlContent.exist('/Samples/Sample') = 1   SELECT xmlContent.exist('/Samples//Name'),      * FROM xmlTable  WHERE xmlContent.exist('/Samples//Name') = 1 

2.  检查XML节点值是否存在

SELECT TOP 100    *   FROM  xmlTable   WHERE xmlContent.exist('/Samples/Sample[Value=1]') = 1 

3.  获取某个XML节点的内容 (类似DOM的OutterXML)

SELECT TOP 100   xmlContent.query('/Samples/Sample/Name'),      *   FROM  xmlTable 

4.  获取指定XML块的内容 (类似DOM的innerText)

SELECT TOP 100   xmlContent.value('(/Samples/Sample/Name)[1]', 'varchar(100)'),      *   FROM  xmlTable 

附:做测试用的数据表和数据的生成SQL

-- 创建测试表

CREATE TABLE [xmlTable](      [xmlId] [int] IDENTITY(1,1) NOT NULL,      [xmlName] [varchar](50) NOT NULL,      [xmlContent] [xml] NOT NULL,      [xmlDescr] [varchar](2000) NULL  

-- 初始化数据

-- truncate table xmlTable  DECLARE @iRow int,          @xmlContent xml,          @xmlName varchar(50),          @xmlId int  SET @iRow = 0 SELECT @xmlId = max(xmlid) from xmlTable  if(@xmlId is null)      SET @xmlId = @iRow + 1  While @iRow < 5 BEGIN      SET @xmlName = 'Sample' + Convert(varchar(10), @xmlId + @iRow)      SET @xmlContent = '<Samples><Sample><Name>' + @xmlName+ '</Name><Value>'+ CONVERT(varchar(20), @xmlId + @iRow)           + '</Value></Sample></Samples>'      INSERT INTO [xmlTable]             ([xmlName]             ,[xmlContent]             --,[xmlDescr]             )       VALUES             (@xmlName             ,@xmlContent             --,<xmlDescr, varchar(2000),>            )        SET @iRow = @iRow + 1  END 

关于SQL Server数据库对XML节点和XML块的操作就介绍到这里了,希望本次的介绍能够对您有所收获!