【问题标题】:oracle procedure looping a string and insert into another tableoracle程序循环一个字符串并插入另一个表
【发布时间】:2018-03-24 14:01:09
【问题描述】:

我有这个字符串:RC1500ZQ10RC2400ZQ20RC23ZQ3RC2322ZQ22

我需要创建一个过程或触发器来拆分上述字符串,然后将其作为行插入到另一个表中。

像这样:

RC = NEW ROW . 
ZQ = NEW COULMN .
Row 1 RC1500ZQ10 = 1500,10 
Row 2 RC2400ZQ20 = 2400,20
Row 3 RC23  ZQ3  = 23,3
Row 4 RC2322ZQ22 = 2322,22

等等..

有人可以帮忙吗?

【问题讨论】:

    标签: oracle plsql triggers procedure


    【解决方案1】:

    您需要过程或触发器的任何具体原因?

    在单个 SQL 中使用 REGEXP_SUBSTRCONNECT BY。您可以在过程中包含查询以通过传递字符串参数来执行insert

    'RC(.+?)ZQ' - 匹配 RC 和下一个 ZQ 之间的任何内容

    'ZQ(.+?)(RC|$)' - 匹配 ZQ 和下一个 RC 或行尾之间的任何内容

    SQL Fiddle

    Oracle 11g R2 架构设置

    create table t as 
    select 'RC1500ZQ10RC2400ZQ20RC23ZQ3RC2322ZQ22' as s from dual;
    

    查询 1

    --INSERT INTO yourtarget(rc,zq) 
    SELECT REGEXP_SUBSTR(s, 'RC(.+?)ZQ', 1, LEVEL, NULL, 1)     AS RC,
           REGEXP_SUBSTR(s, 'ZQ(.+?)(RC|$)', 1, LEVEL, NULL, 1) AS ZQ
    FROM   t --or DUAL
    CONNECT BY LEVEL <= REGEXP_COUNT(s, 'RC(.+?)ZQ')
    

    Results

    |   RC | ZQ |
    |------|----|
    | 1500 | 10 |
    | 2400 | 20 |
    |   23 |  3 |
    | 2322 | 22 |
    

    【讨论】:

      猜你喜欢
      • 2015-02-11
      • 1970-01-01
      • 2012-09-25
      • 2020-04-13
      • 2011-05-13
      • 1970-01-01
      • 1970-01-01
      • 2011-03-09
      相关资源
      最近更新 更多