sample 1:

declare @x xml

select @x='<ArrayOfScheduledTime>
<ScheduledTime>
<RecurrenceType>EveryMonday</RecurrenceType>
<Stamp>
<dateTime>2000-01-01T19:30:00</dateTime>
</Stamp>
</ScheduledTime>
<ScheduledTime>
<RecurrenceType>EveryThursday</RecurrenceType>
<Stamp>
<dateTime>2000-01-01T19:30:00</dateTime>
</Stamp>
</ScheduledTime>
<ScheduledTime>
<RecurrenceType>EverySunday</RecurrenceType>
<Stamp>
<dateTime>2000-01-01T19:30:00</dateTime>
</Stamp>
</ScheduledTime>
</ArrayOfScheduledTime>' SELECT N.v.value('.' , 'VARCHAR(100)')B
FROM @x.nodes('/ArrayOfScheduledTime/ScheduledTime/RecurrenceType')N(v) /*
EveryMonday
EveryThursday
EverySunday
*/
select @x.query('/ArrayOfScheduledTime/ScheduledTime/RecurrenceType')
/*
<RecurrenceType>EveryMonday</RecurrenceType>
<RecurrenceType>EveryThursday</RecurrenceType>
<RecurrenceType>EverySunday</RecurrenceType>
*/
select o.value('RecurrenceType[1]','varchar(20)') 'RecurrenceType'
from (select @x 'x') t
cross apply x.nodes('/ArrayOfScheduledTime/ScheduledTime') x(o) /*
RecurrenceType
--------------------
EveryMonday
EveryThursday
EverySunday (3 行受影响)
*/
DECLARE @handel int;
EXEC sp_xml_preparedocument @handel output, @x
SELECT * from OPENXML(@handel,'/ArrayOfScheduledTime/ScheduledTime',2)
WITH(RecurrenceType varchar(50)) EXEC sp_xml_removedocument @handel /**************结果*****************
EveryMonday
EveryThursday
EverySunday
*/

sample2:

DECLARE @xDailyConfig XML
set @xDailyConfig='<ArrayOfScheduledTime>
<ScheduledTime>
<RecurrenceType>Everyday</RecurrenceType>
<Stamp>
<dateTime>2000-01-01T09:00:00</dateTime>
<dateTime>2000-01-01T13:00:00</dateTime>
<dateTime>2000-01-01T19:00:00</dateTime>
</Stamp>
</ScheduledTime>
</ArrayOfScheduledTime>' SELECT N.v.value('.' , 'VARCHAR(100)')B
FROM @xDailyConfig.nodes('/ArrayOfScheduledTime/ScheduledTime/Stamp/dateTime')N(v) /*
2000-01-01T09:00:00
2000-01-01T13:00:00
2000-01-01T19:00:00
*/
DECLARE @handel int;
EXEC sp_xml_preparedocument @handel output, @xDailyConfig
SELECT * from OPENXML(@handel,'/ArrayOfScheduledTime/ScheduledTime/Stamp/dateTime',3)
WITH(dateTime varchar(50) '.[1]') EXEC sp_xml_removedocument @handel /*
2000-01-01T09:00:00
2000-01-01T13:00:00
2000-01-01T19:00:00
*/

--  统计每一个RecurrenceType对其相应的dateTime的个数

declare @x xml

 select @x='<ArrayOfScheduledTime>
<ScheduledTime>
<RecurrenceType>EverySaturday</RecurrenceType>
<Stamp>
<dateTime>2000-01-01T07:00:00</dateTime>
<dateTime>2000-01-01T08:00:00</dateTime>
</Stamp>
</ScheduledTime>
<ScheduledTime>
<RecurrenceType>EveryWednesday</RecurrenceType>
<Stamp>
<dateTime>2000-01-01T09:00:00</dateTime>
</Stamp>
</ScheduledTime>
<ScheduledTime>
<RecurrenceType>EveryFriday</RecurrenceType>
<Stamp>
<dateTime>2000-01-01T09:00:00</dateTime>
<dateTime>2000-01-01T09:20:00</dateTime>
<dateTime>2000-01-01T09:40:00</dateTime>
</Stamp>
</ScheduledTime>
<ScheduledTime>
<RecurrenceType>EverySunday</RecurrenceType>
<Stamp>
<dateTime>2000-01-01T09:00:00</dateTime>
</Stamp>
</ScheduledTime>
</ArrayOfScheduledTime>' SELECT T2.RecurrenceType,COUNT(T3.[dateTime]) [Count]
FROM
( SELECT CONVERT(XML,N.v.query('.'))C1
FROM @x.nodes('/ArrayOfScheduledTime/ScheduledTime')N(v))T1
OUTER APPLY(
SELECT M.v.value('.','VARCHAR(100)')RecurrenceType
FROM T1.C1.nodes('//RecurrenceType') M(v)
)T2
OUTER APPLY(
SELECT L.v.value('.','VARCHAR(100)')[dateTime]
FROM T1.C1.nodes('//dateTime') L(v)
)T3
GROUP BY T2.RecurrenceType
/*
RecurrenceType Count
-------------------- -----------
EverySaturday 2
EveryWednesday 1
EveryFriday 3
EverySunday 1
*/ SELECT N.v.query('RecurrenceType').value('.','VARCHAR(20)') RecurrenceType,
N.v.query('count(Stamp//dateTime)').value('.','int') [Count]
FROM @x.nodes('/ArrayOfScheduledTime/ScheduledTime')N(v)
/*
RecurrenceType Count
-------------------- -----------
EverySaturday 2
EveryWednesday 1
EveryFriday 3
EverySunday 1
*/

其他例子:

       declare @x xml=
'<ArrayOfGuid>
<guid>754350a3-228e-4981-a430-a5f62af9b936</guid>
<guid>792f9404-6330-4302-999a-3ec36e9e1275</guid>
</ArrayOfGuid>' -- get count
SELECT TOP 1 N.v.query('count(//guid)').value('.','varchar(100)') [COUNT]
FROM @x.nodes('/ArrayOfGuid/guid')N(v) -- get each guidValue
SELECT N.v.value('.','VARCHAR(100)') guidValue
--N.v.query('count(//guid)').value('.','VARCHAR(100)') [Count]
FROM @x.nodes('/ArrayOfGuid/guid')N(v) /* result COUNT
----------------------------------------------------------------------------------------------------
2 (1 行受影响) guidValue
----------------------------------------------------------------------------------------------------
754350a3-228e-4981-a430-a5f62af9b936
792f9404-6330-4302-999a-3ec36e9e1275 (2 行受影响)
*/

other sample 2:

  declare @x xml
='<Audits OperatorKey="77de120a-7704-49b1-8980-8f1e9ad65edd">
<AuditItem SourceName="PatientProfile" SourceIdentity="77de120a-7704-49b1-8980-8f1e9ad65edd">
<DataXml>
<PatientProfile>
<Key p2:nil="true" xmlns:p2="http://www.w3.org/2001/XMLSchema-instance" />
<CreatedStamp>2015-07-28T03:18:46.843Z</CreatedStamp>
<LastUpdatedStamp>2015-07-28T03:18:46.844Z</LastUpdatedStamp>
<State>Normal</State>
<UserKey>77de120a-7704-49b1-8980-8f1e9ad65edd</UserKey>
<FirstName>zhang</FirstName>
<LastName>andy</LastName>
<MiddleName />
<Gender>Male</Gender>
<Birthday p2:nil="true" xmlns:p2="http://www.w3.org/2001/XMLSchema-instance" />
<AvatarCode />
<AvatarKey p2:nil="true" xmlns:p2="http://www.w3.org/2001/XMLSchema-instance" />
<ProgramKeyList />
<Overall />
<BirthLocation />
<Residence />
<BodyHeight>0</BodyHeight>
<MainDisease />
<OtherDisease>
<TimeBasedDiseaseItemOfDiseaseName>
<Time>1</Time>
<DiseaseItem>
<Key>15aabe2b-73af-426d-b668-b93fb84035ec</Key>
<CreatedStamp>2015-07-28T03:41:01.1260093Z</CreatedStamp>
<LastUpdatedStamp>2015-07-28T03:41:01.1260093Z</LastUpdatedStamp>
<State>Normal</State>
<ThirdPartyIdentity>542cb968-f806-46ee-9e9d-8ba5bdbf8da7</ThirdPartyIdentity>
<IsMain>false</IsMain>
<Name />
<CultureInfo>zh-cn</CultureInfo>
</DiseaseItem>
</TimeBasedDiseaseItemOfDiseaseName>
</OtherDisease>
<Symptoms />
<MedicalHistory />
<Infections />
<Allergies />
<FamilyHistory />
<SmokingHistory />
<DrinkingHistory />
<EmergencyContact />
<SurgeryHistory>
<SurgeryHistory>
<Key p4:nil="true" xmlns:p4="http://www.w3.org/2001/XMLSchema-instance" />
<CreatedStamp>2015-07-28T03:18:46.848Z</CreatedStamp>
<LastUpdatedStamp>2015-07-28T03:18:46.849Z</LastUpdatedStamp>
<State>Normal</State>
<SurgeryDate>2015-02-01T03:18:46.849Z</SurgeryDate>
<Surgery>
<Key>b259b887-ac76-4f01-a03d-afa1a8e238a2</Key>
<CreatedStamp>2015-07-28T03:18:41.685Z</CreatedStamp>
<LastUpdatedStamp>2015-07-28T03:18:41.688Z</LastUpdatedStamp>
<State>Normal</State>
<NameCN>肝移植</NameCN>
<NameEN>Liver Transplant</NameEN>
</Surgery>
</SurgeryHistory>
</SurgeryHistory>
<PatientLocation>
<Key p3:nil="true" xmlns:p3="http://www.w3.org/2001/XMLSchema-instance" />
<CreatedStamp>2015-07-28T03:18:46.845Z</CreatedStamp>
<LastUpdatedStamp>2015-07-28T03:18:46.847Z</LastUpdatedStamp>
<State>Normal</State>
<UserKey>77de120a-7704-49b1-8980-8f1e9ad65edd</UserKey>
<GeographyTierKey_Province>d4538110-24fc-4edd-9320-1f6b62b192fa</GeographyTierKey_Province>
<GeographyTierKey_City>a92c824c-512e-4d8b-812d-448b95546662</GeographyTierKey_City>
<Province>吉林省</Province>
<City>白城市</City>
</PatientLocation>
<DrugRemind>
<DrugRemind>
<Key>db9808b9-4957-47c6-99c1-92ca97548392</Key>
<CreatedStamp>2015-07-28T03:13:18.753Z</CreatedStamp>
<LastUpdatedStamp>2015-07-28T03:13:18.753Z</LastUpdatedStamp>
<State>Normal</State>
<TargetUserKey>77de120a-7704-49b1-8980-8f1e9ad65edd</TargetUserKey>
<DrugKey>00000000-0000-0000-0000-000000000000</DrugKey>
<BrandKey>00000000-0000-0000-0000-000000000000</BrandKey>
<DrugName>新山地明/普乐可复</DrugName>
<BrandName>新山地明/普乐可复</BrandName>
<BoxSize>0</BoxSize>
<Unit>;2-6 mg</Unit>
<Amount>1</Amount>
<DoseStrength>0</DoseStrength>
<DoseStrengthWithUnit>2-6 mg</DoseStrengthWithUnit>
<DoseTimePin>
<Recurrence>EveryHour</Recurrence>
<ReferenceStamps>
<dateTime>2000-01-01T00:00:00Z</dateTime>
<dateTime>2000-01-01T12:00:00Z</dateTime>
</ReferenceStamps>
<StartStamp>2014-08-22T00:00:00Z</StartStamp>
<EndStamp p5:nil="true" xmlns:p5="http://www.w3.org/2001/XMLSchema-instance" />
</DoseTimePin>
<CreatedBy>77de120a-7704-49b1-8980-8f1e9ad65edd</CreatedBy>
</DrugRemind>
<DrugRemind>
<Key>bb49ed53-b16f-4caa-882e-82dcdf8ce991</Key>
<CreatedStamp>2015-07-28T03:13:18.747Z</CreatedStamp>
<LastUpdatedStamp>2015-07-28T03:13:18.747Z</LastUpdatedStamp>
<State>Normal</State>
<TargetUserKey>77de120a-7704-49b1-8980-8f1e9ad65edd</TargetUserKey>
<DrugKey>00000000-0000-0000-0000-000000000000</DrugKey>
<BrandKey>00000000-0000-0000-0000-000000000000</BrandKey>
<DrugName>米芙/骁悉</DrugName>
<BrandName>米芙/骁悉</BrandName>
<BoxSize>0</BoxSize>
<Unit>;1080 mg</Unit>
<Amount>1</Amount>
<DoseStrength>0</DoseStrength>
<DoseStrengthWithUnit>1080 mg</DoseStrengthWithUnit>
<DoseTimePin>
<Recurrence>EveryHour</Recurrence>
<ReferenceStamps>
<dateTime>2000-01-01T00:00:00Z</dateTime>
<dateTime>2000-01-01T12:00:00Z</dateTime>
</ReferenceStamps>
<StartStamp>2014-08-22T00:00:00Z</StartStamp>
<EndStamp p5:nil="true" xmlns:p5="http://www.w3.org/2001/XMLSchema-instance" />
</DoseTimePin>
<CreatedBy>77de120a-7704-49b1-8980-8f1e9ad65edd</CreatedBy>
</DrugRemind>
</DrugRemind>
</PatientProfile>
</DataXml>
</AuditItem>
</Audits>' --declare @GeographyTierKey_Province varchar(100)
-- select @GeographyTierKey_Province=@x.value('(Audits/AuditItem/DataXml/PatientProfile/PatientLocation/GeographyTierKey_Province)[0]','varchar(100)') -- print @GeographyTierKey_Province declare @GeographyTierKey_Province varchar(100)
--select @GeographyTierKey_Province=@x.value('(Audits/AuditItem/DataXml/PatientProfile/PatientLocation/GeographyTierKey_Province)[0]','varchar(100)') --print @GeographyTierKey_Province
select @GeographyTierKey_Province=(SELECT top 1 N.v.value('.','VARCHAR(100)') guidValue
--N.v.query('count(//guid)').value('.','VARCHAR(100)') [Count]
FROM @x.nodes('Audits/AuditItem/DataXml/PatientProfile/PatientLocation/GeographyTierKey_Province')N(v) ) select @GeographyTierKey_Province
-- d4538110-24fc-4edd-9320-1f6b62b192fa

来源:

SQL特殊语句的笔记

http://www.2cto.com/database/201205/133329.html

说明,使用 openxml后。一定要记得用 sp_xml_removedocument 释放xml document资源。

(结束)

sql for xml query sample的更多相关文章

  1. 转载---SQL Server XML基础学习之<5>--XQuery(query)

    本章写一些SQL Server XML的一些XQuery基础语法,主要讲的query查询语法 T-SQL 支持用于查询 XML 数据类型的 XQuery 语言的子集. XQuery 基于现有的 XPa ...

  2. SQL SERVER XML 学习总结

    SQL  SERVER  XML  学习总结 最新的项目任务要做一个数据同步的功能,这些天都在做技术准备,主要是用到了微软的Service Broker技术,在熟悉使用该技术的同时,又用到了Sql s ...

  3. 转载---SQL Server XML基础学习之<6>--XQuery的 value() 方法、 exist() 方法 和 nodes() 方法

    /*------------------------------------------------------------------------------+ #| = : = : = : = : ...

  4. SQL Server XML数据解析

    --5.读取XML --下面为多种方法从XML中读取EMAIL DECLARE @x XML SELECT @x = ' <People> <dongsheng> <In ...

  5. SQL Server XML 查询

    [参考1] 18个小实例入门SQLServer XML查询 [参考2] 转载---SQL Server XML基础学习之<5>--XQuery(query)

  6. Sql Server xml 类型字段的增删改查

    1.定义表结构 在MSSM中新建数据库表CommunicateItem,定义其中一个字段ItemContentXml 为xml类型 2.编辑表数据,新增一行,发现xml类型不能通过设计器录入数据. 需 ...

  7. 解决java.sql.SQLException: ORA-01789: query block has incorrect number of result columns

    java.sql.SQLException: ORA-01789: query block has incorrect number of result columns at oracle.jdbc. ...

  8. sql分组合并字段重复项sql for xml path

    -------------------------(情景描述) 在我们处理数据时,可能会碰到这种情景: Id                Name 1                  a,b 2  ...

  9. Oracle使用Sql把XML解析成表(Table)的方法

    SELECT * FROM XMLTABLE('$B/DEAL_BASIC/USER_DEAL_INFO' PASSING XMLTYPE('<?xml version="1.0&qu ...

随机推荐

  1. 作为刚開始学习的人应该怎样来学习FPGA

    FPGA作为一种高新的技术.已经逐渐普及到了各行各业.不管是消费类.通信类.电子行业都无处不在它的身影,从1985年第一颗FPGA诞生至 今,FPGA已经历了将近20多个年头,从当初的几百个门电路到如 ...

  2. LightOJ 1070 Algebraic Problem (推导+矩阵高速幂)

    题目链接:problem=1070">LightOJ 1070 Algebraic Problem 题意:已知a+b和ab的值求a^n+b^n.结果模2^64. 思路: 1.找递推式 ...

  3. 71.用express框架,出现 express.Router is not a function

    Express版本太久

  4. 如何让hudson的两个job共用一个svn工作目录

    作者:朱金灿 来源:http://blog.csdn.net/clever101 现在我的需求是这样的:一个软件需要编译完全版本和基础版本,完全版本的基础功能较多,基础版本只包含了基础功能.有时只需要 ...

  5. OpenCV —— 图像处理

    使用图像结构中所定义的高层处理方法(图形和视觉范畴)来完成特定任务 平滑处理   cvSmooth 处理后图像与输入图像的大小相同(不用考虑边缘) 中值滤波  CV_MEDIAN 不支持 in pla ...

  6. lastb---显示用户错误的登录列表

    lastb命令用于显示用户错误的登录列表,此指令可以发现系统的登录异常.单独执行lastb命令,它会读取位于/var/log目录下,名称为btmp的文件,并把该文件内容记录的登入失败的用户名单,全部显 ...

  7. Mysql学习总结(16)——Mysql之数据库设计规范

    一.三大范式 1.第一范式:消除一个字段包含多个数据库值,消除一个记录包含重复的组(单独的一列包含多个项目),即可满足1NF. 2.第二范式:消除部分依赖性即可转化为2NF.部分依赖性表示一个记录中包 ...

  8. ELK+KAFKA安装部署指南

    一.ELK 背景 通常,日志被分散的储存不同的设备上.如果你管理数十上百台服务器,你还在使用依次登录每台机器的传统方法查阅日志.这样是不是感觉很繁琐和效率低下.当务之急我们使用集中化的日志管理,例如: ...

  9. 解决 Visual Studio 2013、2015、2017 工具箱不显示ArcGIS 10.2 控件,及ArcGIS模板丢失问题

    1.重装ArcObject SDK for .NET Framework方法 (1)问题描述: 环境:WIN10 64bit.Visual Studio 2013.ArcGIS10.1.ArcGIS ...

  10. 内网使用 IPV6 之Teredo篇

    这篇转载自 http://bbs.pcbeta.com/viewthread-1580771-1-1.html 上IPv6站点之Teredo篇http://bbs.pcbeta.com/viewthr ...