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?行受影响) */ (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |