热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SQL解析XML

-------------------------------成功------------------------------------------------------------withpivot_infoas( select*from( 

-------------------------------成功------------------------------------------------------------

with pivot_info as(

  select * from (

      select t.workcode, to_char(count(1)) DPAPC,failmodeldic.dic_name failmodelname

          from tdm_testpart t,pub_dictionary failmodeldic

         where t.workcode is not null

           and t.isdpa = '1'

           and t.isreturn=1

           and t.failuremodel=failmodeldic.dic_code(+)

         group by t.workcode,failmodeldic.dic_name

         )  pivot xml(max(DPAPC) DPAPC,max(failmodelname) failmodelname for workcode in (select distinct tt.workcode

                                                                              from TDM_TESTPART tt 

                                                                             where tt.workcode is not null)))

select extractvalue (value (t), '/item/column[@name="WORKCODE"]') WORKCODE,

    extractvalue (value (t), '/item/column[@name="DPAPC"]') DPAPC,

        extractvalue (value (t), '/item/column[@name="FAILMODELNAME"]') FAILMODELNAME

from pivot_info,

        XMLTable ('/PivotSet/item' passing WORKCODE_XML) t

-----------------半成品----------------------

with pivot_info as(

  select * from (

      select t.workcode, to_char(count(1)) DPAPC,failmodeldic.dic_name failmodelname

          from tdm_testpart t,pub_dictionary failmodeldic

         where t.workcode is not null

           and t.isdpa = '1'

           and t.isreturn=1

           and t.failuremodel=failmodeldic.dic_code(+)

         group by t.workcode,failmodeldic.dic_name

         )  pivot xml(max(DPAPC) DPAPC,max(failmodelname) failmodelname for workcode in (select distinct tt.workcode

                                                                              from TDM_TESTPART tt 

                                                                             where tt.workcode is not null)))

select extractvalue (value (t), '/item/colunm[@name="WORKCODE"]') WORKCODE,

    extractvalue (value (t), '/item/colunm[@name="DPAPC"]') DPAPC,

     extractvalue (value (t), '/item/colunm[@name="FAILMODELNAME"]') FAILMODELNAME

from pivot_info,

     XMLTable ('/PivotSet/item' passing WORKCODE_XML) t



----------------半成品---------------

with a as(

  select * from (

      select t.workcode, to_char(count(1)) DPAPC,failmodeldic.dic_name failmodelname

          from tdm_testpart t,pub_dictionary failmodeldic

         where t.workcode is not null

           and t.isdpa = '1'

           and t.isreturn=1

           and t.failuremodel=failmodeldic.dic_code(+)

         group by t.workcode,failmodeldic.dic_name

         )  pivot xml(max(DPAPC) DPAPC,max(failmodelname) failmodelname for workcode in (select distinct tt.workcode

                                                                              from TDM_TESTPART tt 

                                                                             where tt.workcode is not null)))

select extractvalue (WORKCODE_XML, '/PivotSet//item/colunm[@name="WORKCODE"]/text()') WORKCODE,

    extractvalue (WORKCODE_XML, '/PivotSet/item/colunm[@name="DPAPC"]/text()') DPAPC,

     extractvalue (WORKCODE_XML, '/PivotSet/item/colunm[@name="FAILMODELNAME"]/text()') FAILMODELNAME

from a


------------半成品---------

select *

  from (

  select workcode ,DPAPC,failmodelname from(

 

      select t.workcode, to_char(count(1)) DPAPC,failmodeldic.dic_name failmodelname

          from tdm_testpart t,pub_dictionary failmodeldic

         where t.workcode is not null

           and t.isdpa = '1'

           and t.isreturn=1

           and t.failuremodel=failmodeldic.dic_code(+)

         group by t.workcode,failmodeldic.dic_name

         ) ) pivot xml(max(DPAPC) DPAPC,max(failmodelname) failmodelname for workcode in (select distinct tt.workcode

                                                                              from TDM_TESTPART tt 

                                                                             where tt.workcode is not null)) b,

xmltable('/PivotSet' passing b.workcode_xml columns


   WORKCODE VARCHAR2(50) PATH

    '/item/colunm[@name="WORKCODE"]',

    DPAPC VARCHAR2(50) PATH

    '/item/colunm[@name="DPAPC"]',

    FAILMODELNAME VARCHAR2(50) PATH

    '/item/colunm[@name="FAILMODELNAME"]')

--------------demo-------------



SELECT * FROM XMLTABLE('$B/DEAL_BASIC/USER_DEAL_INFO' PASSING  XMLTYPE('

             

                 

                     A

                     B

                     C

                     D

                     E

                 

                 

                     1

                     2

                     3

                     4

                     5

                 

                 

                     6

                     7

                     8

                     9

                     10

                 

              ') AS B

    COLUMNS USER_DEAL_A  VARCHAR2(50) PATH  '/USER_DEAL_INFO/USER_DEAL_ID[@name="AAA"]',

    USER_DEAL_B VARCHAR2(50) PATH  '/USER_DEAL_INFO/USER_DEAL_ID[@name="BBB"]',

    DEAL_INURE_TIME VARCHAR2(50) PATH   '/USER_DEAL_INFO/DEAL_INURE_TIME',

    DEAL_EXPIRE_TIME VARCHAR2(50) PATH  '/USER_DEAL_INFO/DEAL_EXPIRE_TIME',

    DEAL_CREATE_TIME VARCHAR2(50) PATH  '/USER_DEAL_INFO/DEAL_CREATE_TIME')

这里之所以非得用sql来解析xml 也是不得已。行列转换生成的Clob字段得给页面上展示  又懒得用代码解析 只想套用自己写好的展示工具。

后来折腾了一天之后 经过请教 ibatis 是个很好的工具。 

然后

1.将行专列 的包含 XML 的结果 xmltype 通过 to_clob(workcode_xml) 转换成clob 

2.用ibatis 配置文件 查出来转换成 XML 的 String 字符串

2.对字符串进行解析 封装grid

终于问题解决 释怀了!

写此博文 只为保留经验 以备用的时候方便查询。


推荐阅读
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • C语言注释工具及快捷键,删除C语言注释工具的实现思路
    本文介绍了C语言中注释的两种方式以及注释的作用,提供了删除C语言注释的工具实现思路,并分享了C语言中注释的快捷键操作方法。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • Java String与StringBuffer的区别及其应用场景
    本文主要介绍了Java中String和StringBuffer的区别,String是不可变的,而StringBuffer是可变的。StringBuffer在进行字符串处理时不生成新的对象,内存使用上要优于String类。因此,在需要频繁对字符串进行修改的情况下,使用StringBuffer更加适合。同时,文章还介绍了String和StringBuffer的应用场景。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 本文详细介绍了Spring的JdbcTemplate的使用方法,包括执行存储过程、存储函数的call()方法,执行任何SQL语句的execute()方法,单个更新和批量更新的update()和batchUpdate()方法,以及单查和列表查询的query()和queryForXXX()方法。提供了经过测试的API供使用。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • Oracle seg,V$TEMPSEG_USAGE与Oracle排序的关系及使用方法
    本文介绍了Oracle seg,V$TEMPSEG_USAGE与Oracle排序之间的关系,V$TEMPSEG_USAGE是V_$SORT_USAGE的同义词,通过查询dba_objects和dba_synonyms视图可以了解到它们的详细信息。同时,还探讨了V$TEMPSEG_USAGE的使用方法。 ... [详细]
author-avatar
手机用户2502870143_120
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有