加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SqlServer2005 提取xml相关内容为行集的方法

发布时间:2020-12-12 15:59:59 所属栏目:MsSql教程 来源:网络整理
导读:Author: 水如烟 ? 在我的blog中,专辟了一个专题[资源与数据]来提供一些公用的代码数据,这些代码数据是国标或国家有关部门、或行业发布的,只是我现在手头的或已经提交的,都没有提供出处,或许以后会补充上来。 这些代码数据都以xml方式发表。 如何把这些

Author:水如烟

?

在我的blog中,专辟了一个专题[资源与数据]来提供一些公用的代码数据,这些代码数据是国标或国家有关部门、或行业发布的,只是我现在手头的或已经提交的,都没有提供出处,或许以后会补充上来。

这些代码数据都以xml方式发表。

如何把这些数据转为需要的行集呢,下面提供两种方法。

已知

DECLARE
?????
@xml ?xml
????,
@Info ? nvarchar ( max )

SET ? @Info ? = ?N '
<!--LzmTW(水如烟)?20080101合同终止原因-->
<row?Code="00"?Value="其他"?/>
<row?Code="01"?Value="期满或约定条件终止"?/>
<row?Code="02"?Value="协商一致解除"?/>
<row?Code="03"?Value="试用期内"?/>
<row?Code="04"?Value="严重违纪"?/>
<row?Code="05"?Value="失职舞弊重大损害"?/>
<row?Code="06"?Value="追究刑事责任"?/>
<row?Code="07"?Value="患除或非因工负伤"?/>
<row?Code="08"?Value="不能胜任工作"?/>
<row?Code="09"?Value="客观情况重大变化"?/>
<row?Code="10"?Value="频临破产经营困难"?/>
<row?Code="11"?Value="劳动者提出解除"?/>
<row?Code="12"?Value="强迫劳动"?/>
<row?Code="13"?Value="未提供报酬或条件"?/>
'

OPENXML

SET ? @Info ? = ?N ' <root> ' ? + ? @Info ? + ?N ' </root> '

DECLARE ? @docHandle ? int
EXEC ?sp_xml_preparedocument? @docHandle ?OUTPUT,? @Info

SELECT ? * ?
FROM ?OPENXML( @docHandle ,?N ' /root/row ' )?
WITH ?( [ Code ] ? nchar ( 2 )? ' @Code ' ,? [ Value ] ? nvarchar ( 20 )? ' @Value ' )

EXEC ?sp_xml_removedocument? @docHandle ?

/*
Code?Value
----?--------------------
00???其他
01???期满或约定条件终止
02???协商一致解除
03???试用期内
04???严重违纪
05???失职舞弊重大损害
06???追究刑事责任
07???患除或非因工负伤
08???不能胜任工作
09???客观情况重大变化
10???频临破产经营困难
11???劳动者提出解除
12???强迫劳动
13???未提供报酬或条件

(14?行受影响)
*/

Query

SET ? @xml ? = ? CAST (N ' <root> ' ? + ? @Info ? + ?N ' </root> ' ? AS ?xml)

SELECT ??
?????T.c.value(N
' @Code ' ,? ' nvarchar(2) ' )? AS ? [ Code ]
????,T.c.value(N
' @Value ' ,? ' nvarchar(10) ' )? AS ? [ Value ]
FROM ? @xml .nodes( ' /root/row ' )?T(c)

/*
Code?Value
----?----------
00???其他
01???期满或约定条件终止
02???协商一致解除
03???试用期内
04???严重违纪
05???失职舞弊重大损害
06???追究刑事责任
07???患除或非因工负伤
08???不能胜任工作
09???客观情况重大变化
10???频临破产经营困难
11???劳动者提出解除
12???强迫劳动
13???未提供报酬或条件

(14?行受影响)
*/

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读