SQL操作XML

  前面一段时间为了赶项目的进度,一直在加班,现在空闲了下来将前面碰到的问题整理了一下,发现了一些十分有用的,在此记录下来,看能不能帮助到遇到同样问题的朋友,此文仅是自己个人的意见,若存在问题,还望不宁赐教。

  

  在项目中,我们时候会遇到一些诸如一次性提交许多数据的时候,从惯性思维上来讲,我们首先想到的是循环。但是在此存在一个问题,若数据很多的时候,当前用户操作之后,会一直停留在当前页面,直到提交完成之后才能进行其他的操作,这样对于用户的体验度不好,同时对于程序和数据库之间产生了压力。这时对于我们来说,就急需的要找一个来替代好的方式来替代此方法。经过对他们的请教,发现了一次性提交数据的方式,那就是讲数据以xml的形式进行提交。这样只进行一次提交而完成了所以数据的操作。但是可能这会给数据库带来一定的压力,目前为止,自己还未想到更好的办法,希望有更好的方式我们大家能进行分享,下面若有错的地方,还请大家提出。

  

  在sql中,数据类型相信大家都是十分的 清楚,总共有25种。通常我们也常使用其中对应的。但是对于xml好像自己却是没看到,下面就是一些对于xml的一些常用的操作:

  1.在程序中将数据进行xml的拼接,在此适自己情况而定,我当前情况是如此的

  

1
DECLARE @Xml xml=‘<br><Rates value = "99" OperationUserID="110"><br> <Rate><br>  <Name last="a">aaa</Name><br>  <UserID>126</UserID><br> </Rate><br> <Rate><br>  <Name last="b">bbb</Name><br>  <UserID>125</UserID><br> </Rate><br> <Rate><br>  <Name last="c">ccc</Name><br>  <UserID>123</UserID><br> </Rate><br> <Rate><br>  <Name last="d">ddd</Name><br>  <UserID>124</UserID><br> </Rate><br></Rates>‘

   首先从根节点看下来,先获取当前根节点上的属性

  

1
2
SELECT @Xml.value(‘(/Rates/@value)[1]‘,‘int‘) AS Value
    ,@Xml.value(‘(/Rates/@OperationUserID)[1]‘,‘int‘) AS OperationUserID

   然后从根节点看下来,获取根节点下面的节点信息

  

1
SELECT T.c.value(‘Name[1]‘,‘varchar(20)‘)<br> ,T.c.value(‘UserID[1]‘,‘int‘)<br> ,T.c.value(‘(Name[1]/@last)[1]‘,‘varchar(20)‘)<br>FROM @Xml.nodes(‘/Rates/Rate‘) T(c)

   接下来的就是你取出数据之后,对数据进行的操作了,在这里我就不在献丑了,视自己的情况而定吧。

  在此只列出了我在项目中遇到的情况,相信还有其他的一些方式,希望能有这方面兴趣的朋友,我们能共同的分享。有什么错的地方,还望指出。

  

SQL操作XML

上一篇:很强!Mybatis plus 学习教程 “手写SQL配置” “Mapper多参数传参” + 坑点说明


下一篇:用C语言操纵Mysql