网站导航网学 原创论文 原创专题 网站设计 最新系统 原创论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 交易代码 > SQL语法 > 正文

使用query()查询XML变量

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务

--
--10.5.1节示例
--

--使用query()查询XML变量
DECLARE @stuXML XML
SET @stuXML='<Student>
 <Name>何欢</Name>
 <Sex>1</Sex>
 <Birthday>1982-08-06</Birthday>
</Student>'
SELECT @stuXML.query('/Student/Name') --查询XML

--使用query()查询XML列
SELECT StuInfo.query('/Student/Birthday') AS Birthday –XML查询
FROM XMLStudent2

--
--10.5.2节示例
--

--在XML变量中使用exists()方法
declare @x XML
declare @f bit
set @x = '<root Somedate = "2008-01-01"/>'
set @f = @x.exist('/root[(@Somedate cast as xs:date?) eq xs:date("2008-01-01")]')
–判断其中的表达式是否为真
select @f

--在XML列中使用exists()方法
SELECT StuInfo.query('/Student/Birthday') AS Birthday
FROM XMLStudent
WHERE StuInfo.exist('/Student/Birthday[(text()[1] cast as xs:date ?) = xs:date("1982-08-06") ]')=1

--
--10.5.3节示例
--

--使用value()查询XML列
SELECT StuInfo.value('(/Student/Name)[1]','nvarchar(20)') AS StuName –返回查询出的值
FROM XMLStudent2

--使用exists()代替value()
CREATE TABLE T (c1 int, c2 varchar(10), c3 XML)
GO
SELECT c1, c2, c3
FROM T
WHERE c3.value( '/root[1]/@a', 'integer') = c1  --有性能问题
GO
-- 可以写入以下语句:
SELECT c1, c2, c3
FROM T
WHERE c3.exist( '/root[@a=sql:column("c1")]') = 1  --代替方法
GO

--
--10.5.4节示例
--

--XML插入子节点
DECLARE @stuXML XML --定义XML变量
SET @stuXML='<Student>
 <Name>何欢</Name>
 <Sex>1</Sex>
 <Birthday>1982-08-06</Birthday>
</Student>'
--接下来修改XML变量中的内容
SET @stuXML.modify('
insert <StudentID>2303002027</StudentID>
as first
into (/Student)[1]
')
SELECT @stuXML

--使用replace value of更新性别
DECLARE @stuXML XML
SET @stuXML='<Student>
 <Name>何欢</Name>
 <Sex>1</Sex>
 <Birthday>1982-08-06</Birthday>
</Student>'
SET @stuXML.modify('
replace value of (/Student/Sex/text())[1]
with 0
')—替代性别中的值为0
SELECT @stuXML

--使用delete删除XML中的节点
DECLARE @stuXML XML
SET @stuXML='<Student>
 <Name>何欢</Name>
 <Sex>1</Sex>
 <Birthday>1982-08-06</Birthday>
</Student>'
SET @stuXML.modify('
delete /Student/Birthday
') --删除指定XML节点
SELECT @stuXML

--
--10.5.5节示例
--

--使用nodes获得XML中的节点
DECLARE @stuXML XML
SET @stuXML='<Student>
 <Name>何欢</Name>
 <Sex>1</Sex>
 <Birthday>1982-08-06</Birthday>
</Student>
<Student>
 <Name>晏婉</Name>
 <Sex>0</Sex>
 <Birthday>1974-07-06</Birthday>
</Student>
'
SELECT T.c.query('.') as StuName--获得节点
FROM @stuXML.nodes('/Student/Name/text()') AS T(c) –获得指定路径的节点

 

  • 上一篇资讯: 创建XML主索引
  • 下一篇资讯: 使用非类型化XML
  • 设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
    版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师