设为首页 收藏本站
查看: 1010|回复: 0

[经验分享] [sql server] 2005的xml查询例子

[复制链接]

尚未签到

发表于 2016-11-2 08:48:35 | 显示全部楼层 |阅读模式
  一、
  --建立测试环境
IF OBJECT_ID('PRPXMAINCREDITINFO') IS NOT NULL DROP TABLE PRPXMAINCREDITINFO
GO
CREATE TABLE PRPXMAINCREDITINFO
(
SUBJECT varchar(10),
chinesesubject varchar(20)
)
GO
INSERT PRPXMAINCREDITINFO
SELECT '公司1','样本公司1' union all
SELECT '公司2','样本公司2'
go
IF OBJECT_ID('PRPXTRADE') IS NOT NULL DROP TABLE PRPXTRADE
GO
CREATE TABLE PRPXTRADE
(
TRADECODE varchar(10),
TRADENAME varchar(20)
)
GO
INSERT PRPXTRADE
SELECT '代号1','代号名字1'
--查询
select
(select SUBJECT as "SUBJECT",
chinesesubject as "chinesesubject"
from PRPXMAINCREDITINFO for xml path(''),type
) as "PRPXMAINCREDITINFO",
(select TRADECODE as "TRADECODE",
TRADENAME as "TRADENAME"
from PRPXTRADE for xml path(''),type
) as "PRPXTRADE"
FOR XML PATH(''),type
  --结果
/*
<PRPXMAINCREDITINFO>
<SUBJECT>公司1</SUBJECT><chinesesubject>样本公司1</chinesesubject>
<SUBJECT>公司2</SUBJECT><chinesesubject>样本公司2</chinesesubject>
</PRPXMAINCREDITINFO>
<PRPXTRADE>
<TRADECODE>代号1</TRADECODE>
<TRADENAME>代号名字1</TRADENAME>
</PRPXTRADE>
  */
  
  二、
  if OBJECT_ID('tempdb..#a') is not null
drop table #a;
go
create table #a (id int,Employee xml);
go
insert into #a
select 1,'<NewDataSet>
<xs:schema xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="NewDataSet">
<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:MainDataTable="Table" msdata:UseCurrentLocale="true">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="Table">
<xs:complexType>
<xs:sequence>
<xs:element name="ZoneNo" type="xs:string" minOccurs="0" />
<xs:element name="UserPosition" type="xs:string" minOccurs="0" />
<xs:element name="PositionLevel" type="xs:string" minOccurs="0" />
<xs:element name="RoleType" type="xs:string" minOccurs="0" />
<xs:element name="WorkState" type="xs:string" minOccurs="0" />
<xs:element name="RedeployTime" type="xs:dateTime" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
<Table>
<ID>1</ID>
<ZoneNo>ZY0304</ZoneNo>
<UserPosition>置业顾问</UserPosition>
<PositionLevel>初级顾问</PositionLevel>
<RoleType>0009</RoleType>
<WorkState>在职</WorkState>
<RedeployTime>2007-07-20 9:26:00</RedeployTime>
</Table>
<Table>
<ID>2</ID>
<ZoneNo>ZY0302</ZoneNo>
<UserPosition>置业顾问</UserPosition>
<PositionLevel>初级顾问</PositionLevel>
<RoleType>0010</RoleType>
<WorkState>在职</WorkState>
<RedeployTime>2008-09-20 9:26:00</RedeployTime>
</Table>
</NewDataSet>'
go
  declare @s varchar(max)
select @s=isnull(@s+';'+char(10),'')+'update Table2 set ZoneNo='''+ZoneNo+''',UserPosition='''+UserPosition+''',PositionLevel='''+PositionLevel+
''',RoleType='''+RoleType+''' where RedeployTime>'''+RedeployTime+''''
from #a a cross apply
(select t.x.value('ID[1]','int') bid ,
t.x.value('ZoneNo[1]','varchar(10)') ZoneNo,
t.x.value('UserPosition[1]','varchar(10)') UserPosition,
t.x.value('PositionLevel[1]','varchar(10)') PositionLevel,
t.x.value('RoleType[1]','varchar(10)') RoleType,
t.x.value('WorkState[1]','varchar(10)') WorkState,
t.x.value('RedeployTime[1]','varchar(30)') RedeployTime
from a.Employee.nodes('/NewDataSet/Table') t(x)) b
  print @s
  ------------
update Table2 set ZoneNo='ZY0304',UserPosition='置业顾问',PositionLevel='初级顾问',RoleType='0009' where RedeployTime>'2007-07-20 9:26:00';
update Table2 set ZoneNo='ZY0302',UserPosition='置业顾问',PositionLevel='初级顾问',RoleType='0010' where RedeployTime>'2008-09-20 9:26:00'
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-294528-1-1.html 上篇帖子: [sql server] 组合索引的一些tips 下篇帖子: [sql server] 取汉字 拼音 首字母
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表