SQL2005使用XML特性的初级实践

        今天学习了一下SQL2005XML特性,目的是为了将以前使用的字符串格式存入数据库的XML能够更好地支持直接查询,以前一般都需要先查询到该字段,然后再通过XMLDocument进行载入,然后再通过XPath来定位我们需要的节点,最终获得我们想要的节点值。而且还有一点特别需要注意,以前SQL2000中,如果通过数据库函数进行字符串拆解XML节点值的时候,如果XML字符串超过4000个的时候,会导致获取字符串失败的问题~


通过SQL2005XML特性,这一切以前需要相当费力的处理只需要通过简单的查询语句直接解决!下面来看下,我们如果想改造以前的存储结构,我们需要做那些步骤:


(1)    新建表TestTable,并新建两列:IDAttXml,其中后者的数据类型请选择XML


(2)    通过INSERT方法插入一条数据,主要内容是XML数据,可以参照如下:

         i.      <?xml version="1.0" encoding="GB2312" ?>

<Items>

    <Item name=’apple’>10</Item>

    <Item name=’banana’>30</Item>

</Items>


(3)    数据完成以后,让我们看看常用的几个方法:


         i.      Exist方法:判断节点是否符合相应的条件,例如:

1.   SELECT AttXml.exist(‘/Items/Item’) FROM TestTable   返回“1”,表示存在该节点


2.   SELECT * FROM TestTable WHERE AttXml.exist(‘/Items/Item[@name=”apple”]’)   返回符合条件的所有列


3.   SELECT * FROM TestTable WHERE AttXml.exist(‘/Items/Item’) = 1   表示要符合有Item子节点的数据行


       ii.      Value方法:获取相应节点的内容,例如:


1.   SELECT AttXml.value(‘/Items[1]/Item[1]’) FROM TestTable   可直接获取苹果那条数据,因为每一个节点,我们都要制定,我们要定位的是相同兄弟节点的第几个,也就是上面红色部分的含义,注意从1开始算起


      iii.      Query方法:获取相应的子节点,例如:


1.   SELECT AttXml.query(‘/Items/Item’) FROM TestTable   会将全部的Item子节点都并列返回,且返回的内容包括节点名和节点值



以上就是一些基础的XML内容,如果我们是初级的使用的话,就可以完全满足需要了~

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值