SQL对Xml字段的操作 T-Sql操作Xml数据

合集下载

sqlserverfor xml path

sqlserverfor xml path

SQL Server中的FOR XML PATH语句允许用户将查询结果以XML格式返回。

通过使用FOR XML PATH,用户可以在SQL Server中将查询结果转换为符合XML标准的格式,便于数据交换和处理。

本文将介绍SQL Server中FOR XML PATH语句的基本用法和实际应用场景。

一、FOR XML PATH的基本用法1. FOR XML PATH语句的基本语法在SQL Server中,用户可以通过以下语法将查询结果转换为XML格式:SELECT column1, column2, ...FROM tableFOR XML PATH('root'), ROOT('root')其中,SELECT语句用于选择需要转换为XML的列,而FOR XML PATH('root')语句用于将查询结果放置在一个名为'root'的节点中。

在ROOT('root')中,用户还可以指定XML文档的根节点名称。

2. 使用FOR XML PATH进行简单的XML格式转换接下来,我们通过一个简单的示例来演示FOR XML PATH的基本用法。

假设我们有一个名为'Employee'的表,该表包含两个字段'Name'和'Age',我们希望将查询结果以XML格式返回。

我们可以通过以下SELECT语句选择需要转换为XML格式的字段:SELECT Name, AgeFROM EmployeeFOR XML PATH('Employee'), ROOT('Employees')通过运行以上SQL语句,我们可以得到如下的XML格式结果:<Employees><Employee><Name>John</Name><Age>30</Age></Employee><Employee><Name>Emma</Name><Age>25</Age></Employee>...</Employees>二、FOR XML PATH的高级用法除了基本用法外,FOR XML PATH还可以通过一些高级技巧实现更加灵活和复杂的XML格式转换。

SQL对Xml字段的操作

SQL对Xml字段的操作

SQL对Xml字段的操作T-Sql操作Xml数据一、前言SQL Server 2005 引入了一种称为XML 的本机数据类型。

用户可以创建这样的表,它在关系列之外还有一个或多个XML 类型的列;此外,还允许带有变量和参数。

为了更好地支持XML 模型特征(例如文档顺序和递归结构),XML 值以内部格式存储为大型二进制对象(BLOB)。

用户将一个XML数据存入数据库的时候,可以使用这个XML的字符串,SQL Server会自动的将这个字符串转化为XML类型,并存储到数据库中。

随着SQL Server 对XML字段的支持,相应的,T-SQL语句也提供了大量对XML操作的功能来配合SQL Server中XML字段的使用。

本文主要说明如何使用SQL语句对XML进行操作。

二、定义XML字段在进行数据库的设计中,我们可以在表设计器中,很方便的将一个字段定义为XML类型。

需要注意的是,XML字段不能用来作为主键或者索引键。

同样,我们也可以使用SQL语句来创建使用XML字段的数据表,下面的语句创建一个名为“docs”的表,该表带有整型主键“pk”和非类型化的XML 列“xCol”:CREATE TABLE docs (pk INT PRIMARY KEY, xCol XML not null)XML类型除了在表中使用,还可以在存储过程、事务、函数等中出现。

下面我们来完成我们对XML操作的第一步,使用SQL语句定义一个XML类型的数据,并为它赋值:declare @xmlDoc xml;set @xmlDoc='<book id="0001"><title>C Program</title><author>David</author><price>21</price></book>'三、查询操作在定义了一个XML类型的数据之后,我们最常用的就是查询操作,下面我们来介绍如何使用SQL 语句来进行查询操作的。

idea 格式化xml的sql语句

idea 格式化xml的sql语句

高质量XML的SQL语句格式化方法随着信息技术的飞速发展,数据处理和管理越来越受到重视。

XML作为一种标准的数据交换格式,在各种软件系统中得到了广泛应用。

在实际应用中,我们通常需要将XML格式的数据导入到数据库中进行处理和分析。

而在处理XML数据的过程中,SQL语句的格式化对于提高数据处理效率和准确性非常重要。

本文将针对XML的SQL语句格式化方法进行深入探讨,并给出一些实用的建议和技巧。

一、XML的SQL语句格式化原理1. XML数据结构特点:XML数据具有层级结构、嵌套关系和节点属性等特点,这决定了XML格式的数据在导入数据库时需要进行有效的格式化处理。

2. SQL语句格式化需求:在将XML数据导入数据库时,通常需要将XML数据的层级结构和节点信息映射到数据库表的字段和记录中。

需要对XML数据进行解析和转换,生成对应的SQL语句来完成数据导入操作。

3. SQL语句格式化原理:SQL语句格式化的核心原理是通过解析和分析XML数据的结构,生成对应的INSERT、UPDATE或MERGE等数据库操作语句,从而实现对XML数据的有效导入和处理。

二、XML的SQL语句格式化方法1. 使用内置函数:大多数数据库系统都提供了用于处理XML数据的内置函数和存储过程。

通过调用这些内置函数,可以实现对XML数据的解析和处理,生成相应的SQL语句。

2. 使用解析工具:除了数据库内置函数外,还可以借助专门的XML解析工具来实现对XML数据的格式化处理。

这些解析工具通常提供了丰富的API和功能,能够一次性处理大量的XML数据,并生成对应的SQL语句。

3. 自定义解析逻辑:对于一些复杂的XML数据结构,可能需要编写自定义的解析逻辑来实现格式化处理。

通过编写解析脚本或程序,可以灵活地处理各种特定的XML数据格式,并生成高效、准确的SQL语句。

三、XML的SQL语句格式化实践技巧1. 了解XML数据结构:在进行XML数据的SQL格式化处理前,首先需要深入了解XML数据的结构和特点。

sql xml参数

sql xml参数

sql xml参数摘要:1.SQL 与XML 的概述2.SQL XML 参数的作用与意义3.SQL XML 参数的使用方法4.SQL XML 参数的实际应用案例5.总结正文:1.SQL 与XML 的概述SQL(Structured Query Language,结构化查询语言)是一种用于管理关系型数据库的编程语言,它可以进行数据的查询、插入、更新和删除等操作。

XML(eXtensible Markup Language,可扩展标记语言)是一种用于描述数据结构的文本格式,它具有很强的可扩展性和通用性。

2.SQL XML 参数的作用与意义在SQL 中,XML 参数是一种特殊的数据类型,用于存储和处理XML 数据。

XML 参数在SQL 查询中具有重要作用,它可以让开发者更加方便地处理XML 数据,提高开发效率。

同时,XML 参数也有助于实现SQL 与XML 的互操作,使得两种数据格式可以互相转换和利用。

3.SQL XML 参数的使用方法在SQL 中,使用XML 参数主要分为以下几个步骤:(1)声明XML 参数:在使用XML 参数之前,需要先声明它,声明方法与声明普通变量相似,如:CREATE PARAMETER xml_param AS XML。

(2)赋值:可以通过SET 语句给XML 参数赋值,如:SETxml_param = "<root><element>Value</element></root>";。

(3)查询:在SQL 查询中,可以使用XML 参数进行查询,如:SELECT * FROM table_name WHERE xml_column LIKE CONCAT("%", xml_param, "%");。

(4)更新:通过UPDATE 语句,可以使用XML 参数更新数据库表中的数据,如:UPDATE table_name SET xml_column = CONCAT(xml_column, xml_param);。

sql for xml path用法

sql for xml path用法

sql for xml path用法摘要:1.SQL for XML Path 简介2.SQL for XML Path 的基本语法3.SQL for XML Path 的应用示例4.SQL for XML Path 的优势与局限性正文:【1.SQL for XML Path 简介】SQL for XML Path 是SQL Server 2005 及更高版本中引入的一种查询技术,用于将SQL 查询结果转换为XML 格式。

这种技术使得从关系型数据库中获取数据并进行XML 数据处理变得更加简单方便。

通过使用XML Path,可以轻松地查询数据库中的数据,并将结果转换为XML 格式,以便进行数据交换、传输或进一步处理。

【2.SQL for XML Path 的基本语法】SQL for XML Path 的基本语法包括以下几个关键部分:- SELECT 语句:与普通SQL 查询相同,用于选择需要转换为XML 的数据。

- FOR XML PATH 子句:指明查询结果的XML 结构。

- PATH 子句:定义XML 元素的名称和结构。

以下是一个简单的示例:```sqlSELECT * FROM EmployeesFOR XML PATH("Employees/Employee"), ROOT("Employee")```在这个示例中,查询结果的XML 结构为:`<Employees><Employee>`,其中每个Employee 元素包含了Employees 表中的一条记录。

【3.SQL for XML Path 的应用示例】假设有一个名为Employees 的表,包含以下字段:EmployeeID、FirstName、LastName、Department。

现在需要将这个表的数据转换为XML 格式,以便进行数据交换。

可以使用以下SQL 语句实现:```sqlSELECT EmployeeID, FirstName, LastName, DepartmentFROM EmployeesFOR XML PATH("Employees/Employee")```执行这个查询后,结果集将包含类似以下格式的XML 数据:```xml<Employees><Employee><EmployeeID>1</EmployeeID><FirstName>张三</FirstName><LastName>李四</LastName><Department>开发部</Department></Employee><Employee><EmployeeID>2</EmployeeID><FirstName>王五</FirstName><LastName>赵六</LastName><Department>测试部</Department></Employee></Employees>```【4.SQL for XML Path 的优势与局限性】SQL for XML Path 的优势在于可以将复杂的SQL 查询结果转换为结构化的XML 数据,便于进行数据交换和处理。

xml中的SQL注入

xml中的SQL注入

但是使用第二种写法的时候id的value就会以字符串的形式直接插入到sql语句中从而很容易导致sql注入
xml中的 SQL注入
大家通常知道xml中大部分会导致外部实体注入,但是,xml也会出现SQL注入; 在xml中正常的sql语句写法有两种: 第一: <select id="selectById" resultType="er" > select * from users where id = #id#</select> 第二: <select id="selectById" resultType="er" > select * from users where id = '$id$'</select> 在使用第一种写法的时候,id的value会以参数的形式注入到sql语句中,类似于预编译; 但是使用第二种写法的时候,id的value就会以字符串的形式直接插入到sql语句中,从而很容易导致sql注入。

xmlsql语句详解

xmlsql语句详解

XMLSQL语句是一种用于处理XML数据的SQL语句,用于在数据库中操作XML数据结构。

下面是对XMLSQL语句的详细解释:1. CREATE XMLSCHEMA: 用于创建一个XML模式,用于定义XML文档的结构。

语法为CREATE XMLSCHEMA,后面跟随模式名和模式定义。

2. CREATE XMLINDEX: 用于在数据库中创建一个XML索引,用于加速XML文档的查询操作。

语法为CREATE XMLINDEX,后面跟随索引名、索引类型和索引表达式。

3. SELECT XMLFOREST: 用于将XML文档转换为嵌套的XML元素树,以便于查询和处理。

语法为SELECT XMLFOREST(元素列表),其中元素列表是一个包含元素名称和值的列表。

4. SELECT XMLQUERY: 用于查询XML文档中的特定元素或子元素的值。

语法为SELECT XMLQUERY(查询表达式),其中查询表达式是一个用于选择元素的表达式,可以是XPath表达式或模式匹配表达式。

5. INSERT INTO XMLVALUE: 用于将值插入到XML文档中的特定位置。

语法为INSERT INTO XMLVALUE(元素名称, 值),其中元素名称是要插入的元素的名称,值是要插入的值。

6. UPDATE XMLATTRIBUTE: 用于更新XML文档中元素的属性值。

语法为UPDATE XMLATTRIBUTE(元素名称, 属性名称, 新值),其中元素名称是要更新的元素的名称,属性名称是要更新的属性,新值是新的属性值。

7. DELETE FROM XMLFOREST: 用于从嵌套的XML元素树中删除指定的元素或子元素。

语法为DELETE FROM XMLFOREST(元素列表),其中元素列表是一个包含要删除的元素的名称的列表。

这些是XMLSQL语句的一些基本用法和示例,可以根据具体需求进行扩展和调整。

需要注意的是,不同的数据库系统对XML数据的支持程度不同,语法和功能可能会有所差异。

数据库T-SQL语言操作(T-SQL语句、数据库、表、视图、索引)

数据库T-SQL语言操作(T-SQL语句、数据库、表、视图、索引)

数据库T-SQL语⾔操作(T-SQL语句、数据库、表、视图、索引)T-SQL语⾔按⽤途分四部分1. 数据定义语⾔(CREATE,DROP,ALTER)2. 数据操作语⾔(INSERT,DELETE,UPDATE)3. 数据查询语⾔(SELECT)4. 数据控制语⾔(GRANT,REVOKE,DENY)数据类型1. 系统数据类型2. ⽤户⾃定义数据类型(建⽴⽅式:a.图形化⽅式 b.命令⽅式)1use TEST2EXEC sp_addtype sno,'varchar(10)','nonull'3EXEC sp_droptype sno变量命名规则:字母、下划线、@或#开头,但不能全为下划线、@或#不能为“关键字”,不能嵌⼊空格及其他特殊字符,如需使⽤则需要双引号或⽅括号括起1.局部变量:由⽤户声明,必须以@开头,只在定义该变量的过程中有效,局部变量必须先声明后使⽤注意:第⼀次声明变量时,其值设置为NULL。

局部变量不能使⽤“变量=变量值”的格式进⾏初始化,必须使⽤SELECT或SET语句来设置其初始值。

如果声明字符型的局部变量,⼀定要在变量类型中指明其最⼤长度,否则系统默认其长度为1。

若要声明多个局部变量,请在定义的第⼀个局部变量后使⽤⼀个逗号,然后指定下⼀个局部变量名称和数据类型。

1USE student2DECLARE@var1char(10),@var2int3SET@var1='number'4select@var2=cgrade5from sc6where sno='201810010'78print@var1+"s"2.全局变量:由系统定义,供SQL server系统内部使⽤的变量,任何程序任何时间都可以调⽤。

通常以“@@”开头。

T-SQL语句1.注释语句(1) --(2) /*……*/2.批处理--GO3.控制流程语句(1) begin...end语句(相当于C语⾔中的{} )(2) if...else语句(可嵌套)(3)case语句(多条件选择语句)(4)print语句(屏幕输出语句)(5)while语句(有条件的循环语句)(6)goto语句(⽆条件跳转语句)(7)break语句(8)continue语句4.常⽤函数(系统函数、⽤户⾃定义函数)⼀些系统函数:(1)字符串函数(2)数学函数(3)⽇期和时间函数(4)聚合函数注意:⽤户⾃定义函数:1.分类:标量值函数:返回单个值内联表值函数:返回可更新的表多语句表值函数:返回不可更新的表2.标量值函数命令⽅式创建1CREATE FUNCTION f2(@a real,@b real) 2RETURNS real3AS4BEGIN5IF@a>=@b6RETURN@a7RETURN@b8END910PRINT'最⼤值为'11PRINT dbo.f2(77,56)1CREATE FUNCTION f3(@n real)2RETURNS real3AS4BEGIN5DECLARE@i real,@sum real6SET@i=07SET@sum=08WHILE@i<@n9BEGIN10SET@i=@i+111SET@sum=@sum+@i12END13RETURN@sum14END1516PRINT dbo.f3(10)3.⾃定义函数的调⽤(1)标量值函数可以使⽤select、print、exec调⽤(2)表值函数只能⽤select调⽤4.删除⽅式drop function 函数名数据库数据库概述1.数据库常⽤对象:表、数据类型、视图、索引、存储过程、触发器系统数据库:master、model、tempdb、msdb2.数据库存储结构(数据库⽂件、数据库⽂件组):数据库⽂件:存放数据库数据和数据库对象的⽂件。

将xml文件数据导入到sql中[原]

将xml文件数据导入到sql中[原]

设计数据库的时候为了操作的⽅便,我们可以选择⽤xml格式⽂件来保存我们的数据表结构及其数据。

这样的好处是多⽅⾯的,设计简单,操作⽅便,⾃⼰可以开发⼀个设计数据库表的应⽤程序直接对xml⽂件进⾏操作。

其实另外⼀个好处是在最终使⽤的时候很容易将xml数据导⼊到任何我们想要的数据库中,不过注明的是这中设计的⽅法只在于简便,不可能达到其他专门⼯具的功能了,但针对实践⾃⼰的设计思路来说不是为⼀个好⽅法。

以下为从xml导⼊sql中的⼀种⽅法:(1)我们先选种⼀个我们已经设计好的含数据表结构和数据的⽂件(2)我们选⽤的中转数据库为access2003,这个已经很普及了(3)打开access2003⼀个(4)打开:⽂件-获取外部数据库-导⼈(5)在弹出的对话框中选择⼀个xml格式的⽂件,也即你设计好的含数据结构及数据的那个⽂件(6)点选开始进⼊“导⼊xml”对话框,此时你的xml⽂件中的表结构已经呈现出来了(7)确定-完成(8)这个时候整个xml⽂件就导⼊到access中来了如下在视图中可以看到已经导⼊了⼀个表(9)现在我们可以验证⼀下数据是否完整,我们建⽴的access空数据库保存的位置:C:\db1.mdb,通过以下的查询语句可以显⽰我们需要的数据看看我们已经查询到数据了表的结构和数据都和我们先前设计的⼀模⼀样(8)数据结构和数据都进access了,在怎么整就如你玩弄股掌了......,就挑个语句先......这样我们就在我们想要的数据中建⽴⼀个新表,表名为newtable,表的字段都已经⾃动完成,数据也⾃动导⼊进来!但这样有⼀个问题是:你看在我们整个过程中我们都没有去管数据字段类型、⼤⼩的问题,所以在我们最终将xml数据导⼊到sql后呵呵看看你所有的字段的数据类型你就明⽩了哪位仁兄有好的解决⽅法别忘了告诉我列。

在Oracle数据库中使用SQL语言管理XML文件

在Oracle数据库中使用SQL语言管理XML文件
分 大小 写 。
< h r e>GB2 < c a s t c ast 3 2 / h r e> 1
<pa 数据库建设< pa t t c> /c> t t
< iif> / no d < M e a aa / t t> d
吴荣辉 张伟东 王亚卿 唐可平 ( 国家林业局 华东林业调查规 划设计 院 浙江金华 310 ) 200
摘要:认识 XL M 文件 的结构 ,使用 SL Q 语言将 XL M 文件作为对象整体保存到 Oal rce数 据库 中, 便捷地解析 XL M 文件 的结构 , 读取控制标记的值 , 对存入数据库中的 XL M 对象
要在 网路上寻找信息, 需要人工处理, X 而 ML 则可以让 网页 的信息利用 电脑进行 自 动处理。 XV 格式的文件属于文本文件 ,可 以使 IL l 用普通的文本编辑器进行编辑 ,目 前有两种格 式 ,一种是 We .o dX lF r ML文件格式,一 1 me 种是 V l an ML adt g i i X 文件格式 。 如果一个 X ML 文件满足一定的相关准则 ,且没有使用 D D T
< npr 张 =<c te> cte > /np r
< nog  ̄家林业局 华东院<ctr> ctr> l /nog
< d rs> a des 金华市 人民西 路<a des / d rs>
< otl 3 0 1 p s l p sa>2 1 0 < o t > / a
< pc na > /to tc
继 H IL超文本语言以后,XV Tl V IL语言被 l
誉为第二代的 wwW,与 H ML语言相 比, T X ML有几个特 点,首先是采用开放式平台,
使用 者可 以依照 工作领 域定义 自己 的文件 语

Sql语句查询XML-小结

Sql语句查询XML-小结

Sql语句查询XML-⼩结--两种⽅式查询DECLARE @varXML XML,@varXML1 XML,@varXML2 XML--1、xml数据源为属性⽅式SET @varXML = '<PARAM><Row FID = "1" FName = "张三" /><Row FID = "2" FName = "李四" /><Row FID = "3" FName = "王五" /></PARAM>'Select T.C.value('@FID','INT') AS FID,T.C.value('@FName','VARCHAR(20)') AS FNameFrom @varXML.nodes('/PARAM/Row') T(C)--2、xml数据源为标签⽅式SET @varXML1 = '<PARAM><Row><FID>1</FID><FName>张三</FName></Row><Row><FID>2</FID><FName>李四</FName></Row><Row><FID>3</FID><FName>王五</FName></Row></PARAM>'Select T.C.value('(FID)[1]','INT') AS FID,T.C.value('(FName)[1]','VARCHAR(20)') AS FNameFrom @varXML1.nodes('/PARAM/Row') T(C)--3、xml数据源为属性⽅式(多级嵌套)SET @varXML2 = '<root><hosptail hospCode = "1" hospName = "测试医院" ><dept deptCode = "2" deptName = "内科" ><doctor docCode = "3" docName = "王五" ></doctor></dept></hosptail></root>'Select T.C.value('(/root/hosptail/@hospCode)[1]','INT') AS FID,T.C.value('(/root/hosptail/@hospName)[1]','VARCHAR(20)') AS FName,T.C.value('(/root/hosptail/dept/@deptCode)[1]','INT') AS FID,T.C.value('(/root/hosptail/dept/@deptName)[1]','VARCHAR(20)') AS FName,T.C.value('(/root/hosptail/dept/doctor/@docCode)[1]','INT') AS FID,T.C.value('(/root/hosptail/dept/doctor/@docName)[1]','VARCHAR(20)') AS FNameFrom @varXML2.nodes('/root') T(C)应⽤场景:对外提供的WebService,别⼈访问接⼝后,传⼊XML参数,直接将XML当做存储过程的参数,在存储过程中查询、游标等解析处理。

mybaitis xml时间范围查询sql写法

mybaitis xml时间范围查询sql写法

mybaitis xml时间范围查询sql写法在 MyBatis 中,你可以使用 XML 映射文件来编写 SQL 查询。

如果你想进行时间范围的查询,你可以使用 `BETWEEN` 关键字。

以下是一个简单的例子,假设你有一个`orders` 表,其中有一个`order_date` 列,你想查询订单日期在某个时间范围内的所有订单:
```xml
<select id="findOrdersByDateRange" resultType="Order">
SELECT * FROM orders
WHERE order_date BETWEEN #{startDate} AND #{endDate}
</select>
```
在这个例子中,`#{startDate}` 和 `#{endDate}` 是参数占位符,你可以在 Java 代码中为它们提供实际的值。

例如:
```java
List<Order> orders = sqlSession.selectList("findOrdersByDateRange", new Date(2023, 1, 1), new Date(2023, 6, 30));
```
在这个 Java 代码中,我们使用 `selectList` 方法来执行 SQL 查询,并传递一个 Map 参数,其中包含了 `startDate` 和 `endDate` 的值。

注意:这里的日期格式是 Java 的 `Date` 格式,如果你使用的是其他格式的日期,你可能需要调整 XML 映射文件中的日期格式或者在 Java 代码中进行转换。

SQLServer解析XML数据的方法详解

SQLServer解析XML数据的方法详解

SQLServer解析XML数据的⽅法详解本⽂实例讲述了SQL Server解析XML数据的⽅法。

分享给⼤家供⼤家参考,具体如下:--5.读取XML--下⾯为多种⽅法从XML中读取EMAILDECLARE @x XMLSELECT @x = '<People><dongsheng><Info Name="Email">dongsheng@</Info><Info Name="Phone">678945546</Info><Info Name="qq">36575</Info></dongsheng></People>'-- ⽅法1SELECT @x.value('data(/People/dongsheng/Info[@Name="Email"])[1]', 'varchar(30)')-- ⽅法2SELECT @x.value('(/People/dongsheng/Info[@Name="Email"])[1]', 'varchar(30)')-- ⽅法3SELECTC.value('.','varchar(30)')FROM @x.nodes('/People/dongsheng/Info[@Name="Email"]') T(C)-- ⽅法4SELECTC.value('(Info[@Name="Email"])[1]','varchar(30)')FROM @x.nodes('/People/dongsheng') T(C)-- ⽅法5SELECTC.value('(dongsheng/Info[@Name="Email"])[1]','varchar(30)')FROM @x.nodes('/People') T(C)-- ⽅法6SELECTC.value('.','varchar(30)')FROM @x.nodes('/People/dongsheng/Info') T(C)WHERE C.value('(.[@Name="Email"])[1]','varchar(30)') IS NOT NULL-- ⽅法7SELECTC.value('.','varchar(30)')FROM @x.nodes('/People/dongsheng/Info') T(C)WHERE C.exist('(.[@Name="Email"])[1]') = 1--6.Reading values from an XML variableDECLARE @x XMLSELECT @x ='<Peoples><People Name="tudou" Sex="⼥" /><People Name="choushuigou" Sex="⼥"/><People Name="dongsheng" Sex="男" /></Peoples>'SELECTv.value('@Name[1]','VARCHAR(20)') AS Name,v.value('@Sex[1]','VARCHAR(20)') AS SexFROM @x.nodes('/Peoples/People') x(v)--7.多属性过滤DECLARE @x XMLSELECT @x = '<Employees><Employee id="1234" dept="IT" type="合同⼯"><Info NAME="dongsheng" SEX="男" QQ="5454545454"/></Employee><Employee id="5656" dept="IT" type="临时⼯"><Info NAME="⼟⾖" SEX="⼥" QQ="5345454554"/></Employee><Employee id="3242" dept="市场" type="合同⼯"><Info NAME="choushuigou" SEX="⼥" QQ="54543545"/></Employee></Employees>'--查询dept为IT的⼈员信息--⽅法1SELECTC.value('@NAME[1]','VARCHAR(10)') AS NAME,C.value('@SEX[1]','VARCHAR(10)') AS SEX,C.value('@QQ[1]','VARCHAR(20)') AS QQFROM @x.nodes('/Employees/Employee[@dept="IT"]/Info') T(C)NAME SEX QQ---------- ---------- --------------------dongsheng 男 5454545454⼟⾖⼥ 5345454554*/--⽅法2SELECTC.value('@NAME[1]','VARCHAR(10)') AS NAME,C.value('@SEX[1]','VARCHAR(10)') AS SEX,C.value('@QQ[1]','VARCHAR(20)') AS QQFROM @x.nodes('//Employee[@dept="IT"]/*') T(C)/*NAME SEX QQ---------- ---------- --------------------dongsheng 男 5454545454⼟⾖⼥ 5345454554*/--查询出IT部门type为Permanent的员⼯SELECTC.value('@NAME[1]','VARCHAR(10)') AS NAME,C.value('@SEX[1]','VARCHAR(10)') AS SEX,C.value('@QQ[1]','VARCHAR(20)') AS QQFROM @x.nodes('//Employee[@dept="IT"][@type="合同⼯"]/*') T(C)/*NAME SEX QQ---------- ---------- --------------------dongsheng 男 5454545454*/--12.从XML变量中删除元素DECLARE @x XMLSELECT @x = '<Peoples><People><NAME>⼟⾖</NAME><SEX>男</SEX><QQ>5345454554</QQ></People></Peoples>'SET @x.modify('delete (/Peoples/People/SEX)[1]')SELECT @x/*<Peoples><People><NAME>⼟⾖</NAME><QQ>5345454554</QQ></People></Peoples>*/--19.读取指定变量元素的值DECLARE @x XMLSELECT @x = '<Peoples><People><NAME>dongsheng</NAME><SEX>男</SEX><QQ>423545</QQ></People><People><NAME>⼟⾖</NAME><SEX>男</SEX><QQ>123133</QQ></People><People><NAME>choushuigou</NAME><SEX>⼥</SEX><QQ>54543545</QQ></People></Peoples>'DECLARE @ElementName VARCHAR(20)SELECT @ElementName = 'NAME'SELECT c.value('.','VARCHAR(20)') AS NAMEFROM @x.nodes('/Peoples/People/*[local-name()=sql:variable("@ElementName")]') T(C) /*--------------------dongsheng⼟⾖choushuigou*/--20使⽤通配符读取元素值--读取根元素的值DECLARE @x1 XMLSELECT @x1 = '<People>dongsheng</People>'SELECT @x1.value('(/*/text())[1]','VARCHAR(20)') AS People --星号*代表⼀个元素/*People--------------------dongsheng*/--读取第⼆层元素的值DECLARE @x XMLSELECT @x = '<People><NAME>dongsheng</NAME><SEX>男</SEX><QQ>423545</QQ></People>'SELECT@x.value('(/*/*/text())[1]','VARCHAR(20)') AS NAME/*NAME--------------------dongsheng*/--读取第⼆个⼦元素的值DECLARE @x XMLSELECT @x = '<People><NAME>dongsheng</NAME><SEX>男</SEX><QQ>423545</QQ></People>'SELECT@x.value('(/*/*/text())[2]','VARCHAR(20)') AS SEX/*SEX--------------------男*/--读取所有第⼆层⼦元素值DECLARE @x XMLSELECT @x = '<People><NAME>dongsheng</NAME><SEX>男</SEX><QQ>423545</QQ></People>'SELECTC.value('.','VARCHAR(20)') AS valueFROM @x.nodes('/*/*') T(C)/*value--------------------dongsheng男423545*/--21.使⽤通配符读取元素名称DECLARE @x XMLSELECT @x = '<People>dongsheng</People>'SELECT@x.value('local-name(/*[1])','VARCHAR(20)') AS ElementName/*ElementName--------------------People*/--读取根下第⼀个元素的名称和值DECLARE @x XMLSELECT @x = '<NAME>dongsheng</NAME><SEX>男</SEX></People>'SELECT@x.value('local-name((/*/*)[1])','VARCHAR(20)') AS ElementName, @x.value('(/*/*/text())[1]','VARCHAR(20)') AS ElementValue/*ElementName ElementValue-------------------- --------------------NAME dongsheng*/--读取根下第⼆个元素的名称和值DECLARE @x XMLSELECT @x = '<People><NAME>dongsheng</NAME><SEX>男</SEX></People>'SELECT@x.value('local-name((/*/*)[2])','VARCHAR(20)') AS ElementName, @x.value('(/*/*/text())[2]','VARCHAR(20)') AS ElementValue/*ElementName ElementValue-------------------- --------------------SEX 男*/--读取根下所有的元素名称和值DECLARE @x XMLSELECT @x = '<People><NAME>dongsheng</NAME><SEX>男</SEX></People>'SELECTC.value('local-name(.)','VARCHAR(20)') AS ElementName,C.value('.','VARCHAR(20)') AS ElementValueFROM @x.nodes('/*/*') T(C)/*ElementName ElementValue-------------------- --------------------NAME dongshengSEX 男*/---22.查询元素数量--如下Peoples根节点下有个People⼦节点。

SQLServer中的XML数据进行insert、update、delete

SQLServer中的XML数据进行insert、update、delete

SQLServer中的XML数据进⾏insert、update、deleteSQL Server 2005/2008增加了对XML数据的⽀持,同时也新增了⼏种操作XML的⽅法,本⽂主要以SQL Server 2008为例介绍如何对XML数据进⾏insert、update、delete。

SQL Server中新增加了XML.Modify()⽅法,分别为xml.modify(insert),xml.modify(delete),xml.modify(replace)对应XML的插⼊,删除和修改操作。

本⽂以下⾯XML为例,对三种DML进⾏说明:declare @XMLVar XML;SET @XMLVar= '<catalog><book category="ITPro"><title>Windows Step By Step</title><author>Bill Zack</author><price>49.99</price></book><book category="Developer"><title>Developing ADO .NET</title><author>Andrew Brust</author><price>39.93</price></book><book category="ITPro"><title>Windows Cluster Server</title><author>Stephen Forte</author><price>59.99</price></book></catalog>'1.XML.Modify(Insert)语句介绍A.利⽤as first,at last,before,after四个参数将元素插⼊指定的位置set @XMLVar.modify('insert <first name="at first" /> as first into (/catalog[1]/book[1])')set @XMLVar.modify('insert <last name="at last"/> as last into (/catalog[1]/book[1])')set @XMLVar.modify('insert <before name="before"/> before (/catalog[1]/book[1]/author[1])')set @XMLVar.modify('insert <after name="after"/> after (/catalog[1]/book[1]/author[1])')SELECT @XMLVar.query('/catalog[1]/book[1]');结果集为:1: <book category="ITPro">2: <first name="at first" />3: <title>Windows Step By Step</title>4: <before name="before" />5: <author>Bill Zack</author>6: <after name="after" />7: <price>49.99</price>8: <last name="at last" />9: </book>B.将多个元素插⼊⽂档中--⽅法⼀:利⽤变量进⾏插⼊DECLARE @newFeatures xml;SET @newFeatures = N'; <first>one element</first> <second>second element</second>'SET @XMLVar.modify(' )insert sql:variable("@newFeatures")into (/catalog[1]/book[1])'--⽅法⼆:直接插⼊set @XMLVar.modify(')insert (<first>one element</first>,<second>second element</second>)into (/catalog[1]/book[1]/author[1])'SELECT @XMLVar.query('/catalog[1]/book[1]');结果集为:1: <book category="ITPro">2: <title>Windows Step By Step</title>3: <author>Bill Zack4: <first>one element</first>5: <second>second element</second>6: </author>7: <price>49.99</price>8: <first>one element</first>9: <second>second element</second>10: </book>C.将属性插⼊⽂档中--使⽤变量插⼊declare @var nvarchar(10) = '变量插⼊'set @XMLVar.modify('insert (attribute var {sql:variable("@var")}))into (/catalog[1]/book[1])'--直接插⼊set @XMLVar.modify('insert (attribute name {"直接插⼊"}))into (/catalog[1]/book[1]/title[1])'--多值插⼊set @XMLVar.modify('insert (attribute Id {"多值插⼊1"},attribute name {"多值插⼊2"}) )into (/catalog[1]/book[1]/author[1])'SELECT @XMLVar.query('/catalog[1]/book[1]');结果集为:1: <book category="ITPro" var="变量插⼊">2: <title name="直接插⼊">Windows Step By Step</title>3: <author Id="多值插⼊1" name="多值插⼊2">Bill Zack</author>4: <price>49.99</price>5: </book>D.插⼊⽂本节点set @XMLVar.modify('insert text{"at first"} as first)into (/catalog[1]/book[1])'SELECT @XMLVar.query('/catalog[1]/book[1]');结果集为:1: <book category="ITPro">2: at first3: <title>Windows Step By Step</title>4: <author>Bill Zack</author>5: <price>49.99</price>6: </book>注意:插⼊本⽂同样具体 as first,as last,before,after四种选项,可以参考A中的使⽤⽅法E.插⼊注释节点set @XMLVar.modify(N'insert <!--插⼊评论-->before (/catalog[1]/book[1]/title[1])' )SELECT @XMLVar.query('/catalog[1]/book[1]');结果集为:1: <book category="ITPro">2: <!--插⼊评论-->3: <title>Windows Step By Step</title>4: <author>Bill Zack</author>5: <price>49.99</price>6: </book>注意插⼊注释节点同样具体 as first,as last,before,after四种选项,可以参考A中的使⽤⽅法F.插⼊处理指令set @XMLVar.modify('insert <?Program "Instructions.exe" ?>before (/catalog[1]/book[1]/title[1])' )SELECT @XMLVar.query('/catalog[1]/book[1]');结果集为:1: <book category="ITPro">2: <?Program "Instructions.exe" ?>3: <title>Windows Step By Step</title>4: <author>Bill Zack</author>5: <price>49.99</price>6: </book>注意插⼊处理指令同样具体 as first,as last,before,after四种选项,可以参考A中的使⽤⽅法G.根据 if 条件语句进⾏插⼊set @XMLVar.modify('insertif (/catalog[1]/book[1]/title[2]) thentext{"this is a 1 step"}else ( text{"this is a 2 step"} )into (/catalog[1]/book[1]/price[1])' )SELECT @XMLVar.query('/catalog[1]/book[1]');结果集为:1: <book category="ITPro">2: <title>Windows Step By Step</title>3: <author>Bill Zack</author>4: <price>49.99this is a 2 step</price>5: </book>2.XML.Modify(delete)语句介绍--删除属性set @XMLVar.modify('delete /catalog[1]/book[1]/@category')--删除节点set @XMLVar.modify('delete /catalog[1]/book[1]/title[1]')--删除内容set @XMLVar.modify('delete /catalog[1]/book[1]/author[1]/text()')--全部删除set @XMLVar.modify('delete /catalog[1]/book[2]')SELECT @XMLVar.query('/catalog[1]');结果集为:1: <catalog>2: <book>3: <author />4: <price>49.99</price>5: </book>6: <book category="ITPro">7: <title>Windows Cluster Server</title>8: <author>Stephen Forte</author>9: <price>59.99</price>10: </book>11: </catalog>3.XML.Modify(replace)语句介绍--替换属性set @XMLVar.modify(N'replace value of(/catalog[1]/book[1]/@category)with ("替换属性")' )--替换内容set @XMLVar.modify(N'replace value of(/catalog[1]/book[1]/author[1]/text()[1]) with("替换内容")' )--条件替换set @XMLVar.modify(N'replace value of (/catalog[1]/book[2]/@category) with(if(count(/catalog[1]/book)>4) then"条件替换1"else"条件替换2")' )SELECT @XMLVar.query('/catalog[1]'); 结果集为:1: <catalog>2: <book category="替换属性">3: <title>Windows Step By Step</title>4: <author>替换内容</author>5: <price>49.99</price>6: </book>7: <book category="条件替换2">8: <title>Developing ADO .NET</title>9: <author>Andrew Brust</author>10: <price>39.93</price>11: </book>12: <book category="ITPro">13: <title>Windows Cluster Server</title>14: <author>Stephen Forte</author>15: <price>59.99</price>16: </book>17: </catalog>。

sql 存储过程中xml参数

sql 存储过程中xml参数

sql 存储过程中xml参数(最新版)目录1.SQL 存储过程概述2.XML 参数的定义与使用3.SQL 存储过程中 XML 参数的优点4.实际应用示例正文1.SQL 存储过程概述SQL 存储过程是一种预编译的 SQL 语句集合,用于执行特定的任务。

它可以包含逻辑控制语句、数据操作语句以及其他 SQL 语句。

存储过程在数据库中存储,并在需要时调用。

它们允许用户在单个调用中执行多个SQL 语句,从而减少网络流量和提高性能。

2.XML 参数的定义与使用在 SQL 存储过程中,可以使用 XML 数据类型定义参数。

XML 参数允许用户在存储过程中传递 XML 数据。

在定义 XML 参数时,需要指定参数名、数据类型以及是否允许空值。

在调用存储过程时,需要将 XML 数据作为参数传递。

例如,定义一个包含 XML 数据的存储过程:```sqlCREATE PROCEDURE usp_insert_order_data@order_details XMLASBEGIN-- 处理 XML 数据的逻辑END```3.SQL 存储过程中 XML 参数的优点SQL 存储过程中使用 XML 参数具有以下优点:- 灵活性:XML 数据具有很强的结构化和可扩展性,可以方便地表示复杂的数据结构。

- 易于维护:使用 XML 参数可以简化存储过程的编写和维护,提高开发效率。

- 高性能:XML 参数可以有效地减少网络传输的数据量,提高数据库性能。

4.实际应用示例假设有一个订单管理系统,需要将订单的详细信息存储到数据库中。

可以使用 SQL 存储过程和 XML 参数来实现这个功能。

xml循环insert的sql语句

xml循环insert的sql语句

在XML循环插入的SQL语句中,您可以使用XML数据类型和XML函数来实现循环插入操作。

以下是一个示例SQL语句,用于循环插入XML数据到数据库表中:```sqlDECLARE @xml XML = '<root><row><id>1</id><name>John</name></row><row><id>2</id><name>Jane</name></row><row><id>3</id><age>25</age></row></root>';DECLARE @table_name NVARCHAR(50) = 'YourTable';DECLARE @counter INT = 1;INSERT INTO @table_name (id, name, age)SELECT id, name, ageFROM OPENXML(@counter, '/root/row', 2) WITH (id INT '@id',name NVARCHAR(50) '@name',age INT '@age');```在上述示例中,我们首先声明了一个XML变量`@xml`,其中包含了要循环插入的数据。

然后,我们指定了要插入数据的表名`@table_name`和计数器变量`@counter`。

接下来,我们使用`OPENXML`函数从XML数据中提取数据,并将其插入到数据库表中。

具体来说,我们使用`OPENXML`函数在XML数据中定位到特定的节点路径(这里为`/root/row`),并使用`WITH`子句指定每个节点的数据类型和属性名称。

SQL Server 2008中XML应用

SQL Server 2008中XML应用

8.4.3 SQL Server 2008中XML应用Microsoft 在SQL Server 2000中就推出了与XML相关的功能,并Transact-SQL语言的有关命令中增加了关键字FOR XML和OPENXML,使开发人员可以通过编写Transact-SQL代码来获取XML流形式的查询结果,或者将XML文档格式的数据导入到数据库的基本表中。

SQL Server 2005 不仅扩展了这些关于支持XML的功能,而且推出了一个支持XSD schema验证、基于XQuery的操作和XML索引的本地XML数据类型。

SQL Server 2008在其之前版本支持XML功能的基础之上,做了许多新改进和补充来解决客户在存储和操纵数据库中XML数据时所面临的挑战,不仅程序员能够定义XML数据类型的变量、参数,创建处理XML类型数据的视图、触发器,还能够使用XQuery语言完成对XML文档结点的遍历和数据查询等。

由于篇幅所限,本节只简单介绍在SQL Sever 2008环境中如何将数据库基本表中的数据导出为XML文档,以及如何将XML文档数据导入数据库的基本表。

1、基本表导出为XML文档FOR XML是对标准SQL语言SELECT语句的扩展,数据库管理系统会根据FOR XML使用的模式,返回具有一定格式的XML文档片段以便不同应用程序或者用户之间进行数据交互。

在SQL Server 2008中使用带FOR XML子句的SELECT查询语句就可以从数据库基本表中获得XML数据,而FOR XML子句主要使用RAW和PATH模式。

(1) 单张基本表的导出为介绍方便,我们以第一章介绍的学生表(students)为例,并希望将这张学生表中的数据导出为XML 文档格式的数据,则只要使用表8-7中第3行的SELECT语句即可。

表8-7 将基本表数据导出为XML格式数据注意,表8-7中的第1行和第2行是指定SELECT语句操作的数据库,如果我们在前面已经使用了这个命令,则后面的操作就可以不使用这两行命令了。

pgsql xmltable 用法

pgsql xmltable 用法

XMLTABLE 是PostgreSQL 数据库中的一个功能,它可以将XML 文档转换为关系型数据。

XMLTABLE 可以将XML 文档视为虚拟表,并使用SQL 查询语言来访问和操作XML 数据。

下面是XMLTABLE 的基本用法:```sqlSELECT * FROM xmltable('namespace-uri' PASSING xml_data COLUMNS column1 datatype1, column2 datatype2, ...)```其中:* `namespace-uri` 是XML 文档中使用的命名空间的URI。

如果XML 文档中没有使用命名空间,可以使用NULL 或省略此参数。

* `xml_data` 是包含XML 数据的XML 文档或XML 字符串。

* `column1 datatype1`, `column2 datatype2`, ... 是定义虚拟表的列和相应的数据类型。

可以根据需要指定任意数量的列和相应的数据类型。

下面是一个示例,演示如何使用XMLTABLE 从包含员工数据的XML 文档中检索数据:```sqlSELECT * FROM xmltable('urn:com.example:employees' PASSING '<employees><employee><id>1</id><name>John</name><age>30</age></employee><employee><id>2</id><name>Jane</na me><age>25</age></employee></employees>' COLUMNS id INT PATH 'id', name VARCHAR(50) PATH 'name', age INT PATH 'age') ```上述查询将返回一个包含员工数据的虚拟表,其中包括员工ID、姓名和年龄列。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

SQL对Xml字段的操作
T-Sql操作Xml数据
一、前言
SQL Server 2005 引入了一种称为XML 的本机数据类型。

用户可以创建这样的表,它在关系列之外还有一个或多个XML 类型的列;此外,还允许带有变量和参数。

为了更好地支持XML 模型特征(例如文档顺序和递归结构),XML 值以内部格式存储为大型二进制对象(BLOB)。

用户将一个XML数据存入数据库的时候,可以使用这个XML的字符串,SQL Server会自动的将这个字符串转化为XML类型,并存储到数据库中。

随着SQL Server 对XML字段的支持,相应的,T-SQL语句也提供了大量对XML操作的功能来配合S QL Server中XML字段的使用。

本文主要说明如何使用SQL语句对XML进行操作。

二、定义XML字段
在进行数据库的设计中,我们可以在表设计器中,很方便的将一个字段定义为XML类型。

需要注意的是,XML字段不能用来作为主键或者索引键。

同样,我们也可以使用SQL语句来创建使用XML字段的数据表,下面的语句创建一个名为“docs”的表,该表带有整型主键“pk”和非类型化的XML 列“xCol”:CREATE TABLE docs (pk INT PRIMARY KEY, xCol XML not null)
XML类型除了在表中使用,还可以在存储过程、事务、函数等中出现。

下面我们来完成我们对XML操作的第一步,使用SQL语句定义一个XML类型的数据,并为它赋值:
declare @xmlDoc xml;
set @xmlDoc='<book id="0001">
<title>C Program</title>
<author>David</author>
<price>21</price>
</book>'
三、查询操作
在定义了一个XML类型的数据之后,我们最常用的就是查询操作,下面我们来介绍如何使用SQL语句来进行查询操作的。

在T-Sql中,提供了两个对XML类型数据进行查询的函数,分别是query(xquery)和value(xquery, dataType),其中,query(xquery)得到的是带有标签的数据,而value(xquery, dataType)得到的则是标签的内容。

接下类我们分别使用这两个函数来进行查询。

1、使用query(xquery) 查询
我们需要得到书的标题(title),使用query(xquery)来进行查询,查询语句为:
select @xmlDoc.query('/book/title')
运行结果如图:
2、使用value(xquery, dataType) 查询
同样是得到书的标题,使用value函数,需要指明两个参数,一个为xquery,另一个为得到数据的类型。

看下面的查询语句:
select @xmlDoc.value('(/book/title)[1]', 'nvarchar(max)')
运行结果如图:
3、查询属性值
无论是使用query还是value,都可以很容易的得到一个节点的某个属性值,例如,我们很希望得到boo k节点的id,我们这里使用value方法进行查询,语句为:
select @xmlDoc.value('(/book/@id)[1]', 'nvarchar(max)')
运行结果如图:
4、使用xpath进行查询
xpath是.net平台下支持的,统一的Xml查询语句。

使用XPath可以方便的得到想要的节点,而不用使用where语句。

例如,我们在@xmlDoc中添加了另外一个节点,重新定义如下:
set @xmlDoc='<root>
<book id="0001">
<title>C# Program</title>
<author>Jerry</author>
<price>50</price>
</book>
<book id="0002">
<title>Java Program</title>
<author>Tom</author>
<price>49</price>
</book>
</root>'
--得到id为0002的book节点
select @xmlDoc.query('(/root/book[@id="0002"])')
上面的语句可以独立运行,它得到的是id为0002的节点。

运行结果如下图:
四、修改操作
SQL的修改操作包括更新和删除。

SQL提供了modify()方法,实现对Xml的修改操作。

modify方法的参数为XML修改语言。

XML修改语言类似于SQL 的Insert、Delete、UpDate,但并不一样。

1、修改节点值
我们希望将id为0001的书的价钱(price)修改为100,我们就可以使用modify方法。

代码如下:
set @xmlDoc.modify('replace value of (/root/book[@id=0001]/price/text())[1] with "100 "')
--得到id为0001的book节点
select @xmlDoc.query('(/root/book[@id="0001"])')
注意:modify方法必须出现在set的后面。

运行结果如图:
2、删除节点
接下来我们来删除id为0002的节点,代码如下:
--删除节点id为0002的book节点
set @xmlDoc.modify('delete /root/book[@id=0002]')
select @xmlDoc
运行结果如图:
3、添加节点
很多时候,我们还需要向xml里面添加节点,这个时候我们一样需要使用modify方法。

下面我们就向i d为0001的book节点中添加一个ISBN节点,代码如下:
--添加节点
set @xmlDoc.modify('insert <isbn>78-596-134</isbn> before (/root/book[@id=0001]/pr ice)[1]')
select @xmlDoc.query('(/root/book[@id="0001"]/isbn)')
运行结果如图:
4、添加和删除属性
当你学会对节点的操作以后,你会发现,很多时候,我们需要对节点进行操作。

这个时候我们依然使用m odify方法,例如,向id为0001的book节点中添加一个date属性,用来存储出版时间。

代码如下:--添加属性
set @xmlDoc.modify('insert attribute date{"2008-11-27"} into (/root/book[@id=0001]) [1]')
select @xmlDoc.query('(/root/book[@id="0001"])')
运行结果如图:
如果你想同时向一个节点添加多个属性,你可以使用一个属性的集合来实现,属性的集合可以写成:(attr ibute date{"2008-11-27"}, attribute year{"2008"}),你还可以添加更多。

这里就不再举例了。

5、删除属性
删除一个属性,例如删除id为0001 的book节点的id属性,我们可以使用如下代码:
--删除属性
set @xmlDoc.modify('delete root/book[@id="0001"]/@id')
select @xmlDoc.query('(/root/book)[1]')
运行结果如图:
6、修改属性
修改属性值也是很常用的,例如把id为0001的book节点的id属性修改为0005,我们可以使用如下代码:
--修改属性
set @xmlDoc.modify('replace value of (root/book[@id="0001"]/@id)[1] with "0005"') select @xmlDoc.query('(/root/book)[1]')
运行结果如图:
OK,经过上面的学习,相信你已经可以很好的在SQL中使用Xml类型了,下面是我们没有提到的,你可以去其它地方查阅:exist()方法,用来判断指定的节点是否存在,返回值为true或false;nodes()方法,用来把一组由一个查询返回的节点转换成一个类似于结果集的表中的一组记录行。

相关文档
最新文档