关于SQLServer2005的学习笔记——XML的处理

发表于:2010-7-21 10:13

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:baoqiangwang(csdnblo    来源:51Testing软件测试网采编

分享:

  -- 以下为 value() 和 query() 的用法

--SELECT * FROM VisioXML WHERE ID=4
SELECT
Doc.value('(/ROOT/ROW[1]/ID/text())[1]','int') RootRowID1,  -- 第一行 ID 的值,并且转换为 int 类型
Doc.value('(/ROOT/ROW[2]/ID/text())[1]','int') RootRowID2,  -- 第二行 ID 的值,并且转换为 int 类型
Doc.value('(/ROOT/ROW[1]/NAME/text())[1]','varchar(20)') RootRowNAME1,  -- 第一行 NAME 的值,并且转换为 VARCHAR 类型
Doc.value('(/ROOT/ROW[1]/NAME/@SEX)[1]','varchar(20)') RootRowNAME1SEX, -- 第一行 NAME 中 SEX 属性的值,并且转换为 VARCHAR 类型
Doc.query('/ROOT') Root,              --ROOT 下的所有 XML 内容,类型为 XML
Doc.query('/ROOT/ROW[1]') RootRow1,  --ROOT 下第一行所有的 XML 内容,类型为 XML
Doc.query('/ROOT/ROW[2]') RootRow2   --ROOT 下第二行所有的 XML 内容,类型为 XML
FROM VisioXML
WHERE ID=4

  -- 以下为 exist() 函数在两种环境下的用法

SELECT
Doc.exist('/ROOT/ROW[1]/NAME[(@SEX cast as xs:string?) = xs:string("MALE")]') Row1EQStringMale,
Doc.exist('/ROOT/ROW[1]/NAME[(@SEX cast as xs:string?) = "MALE"]') Row1EQMale,
Doc.exist('/ROOT/ROW[1]/ID[(text()[1] cast as xs:float?) = xs:float(1)]') Row1EQfloat1,
Doc.exist('/ROOT/ROW[2]/ID[(text()[1] cast as xs:float?) = 2]') Row1EQ1
FROM VisioXML
WHERE ID=4
SELECT ID,Doc
FROM VisioXML
WHERE ID=4
AND Doc.exist('/ROOT/ROW[1]/NAME[(@SEX)]')=1      -- 第一行 NAME 中存在 SEX 属性
--AND Doc.exist('/ROOT/ROW[1]/NAME[not(@SEX)]')=1 -- 第一行 NAME 中不存在 SEX 属性
--AND Doc.exist('/ROOT/ROW[1][not(ID/*)]')=1      -- 第一行不存在 ID 字段
--AND Doc.exist('/ROOT/ROW[1][(ID/*)]')=1         -- 第一行存在 ID 字段

22/2<12
重磅发布,2022软件测试行业现状调查报告~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2023
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号