oracle 正则表达式的一次使用经历

主要是在数据加工处理中使用:


数据处理过程如下:


CREATE OR REPLACE PROCEDURE P_DEAL_CMS_DOC IS

  CURSOR C_DEAL IS
    SELECT L.*,
           REGEXP_REPLACE(REGEXP_REPLACE(REGEXP_REPLACE(REGEXP_REPLACE(L.TITLE,
                                                                       '鄂青发+.*?+[0-9]*+.*?+号'),
                                                        '鄂青[联办]发+.*?+[0-9]*+.*?+号'),
                                         '鄂青发+.*?+[〔【]+[0-9]{4}+[〕】]+.*?+[0-9]*+.*?+号'),
                          '鄂青[联办]发+.*?+[〔【]+[0-9]{4}+[〕】]+.*?+[0-9]*+.*?+号') AS TITLE_NEW,
           REGEXP_REPLACE(REGEXP_REPLACE(REGEXP_REPLACE(REGEXP_REPLACE(L.CONTENT,
                                                                       '鄂青发+.*?+[0-9]*+.*?+号'),
                                                        '鄂青[联办]发+.*?+[0-9]*+.*?+号'),
                                         '鄂青发+.*?+[〔【]+[0-9]{4}+[〕】]+.*?+[0-9]*+.*?+号'),
                          '鄂青[联办]发+.*?+[〔【]+[0-9]{4}+[〕】]+.*?+[0-9]*+.*?+号') AS CONTENT_NEW,
           REGEXP_REPLACE(REGEXP_REPLACE(REGEXP_REPLACE(REGEXP_REPLACE(L.SUMMARY,
                                                                       '鄂青发+.*?+[0-9]*+.*?+号'),
                                                        '鄂青[联办]发+.*?+[0-9]*+.*?+号'),
                                         '鄂青发+.*?+[〔【]+[0-9]{4}+[〕】]+.*?+[0-9]*+.*?+号'),
                          '鄂青[联办]发+.*?+[〔【]+[0-9]{4}+[〕】]+.*?+[0-9]*+.*?+号') AS SUMMARY_NEW
      FROM CMS_DOC L
     WHERE L."TYPE" = 2
       AND L.STATE = 4;

BEGIN
  FOR V_DEAL IN C_DEAL LOOP
    BEGIN
      UPDATE CMS_DOC
         SET TITLE   = V_DEAL.TITLE_NEW,
             CONTENT = V_DEAL.CONTENT_NEW,
             SUMMARY = V_DEAL.SUMMARY_NEW
       WHERE ID = V_DEAL.ID;
    END;
  END LOOP;

  COMMIT;

END P_DEAL_CMS_DOC;

解释:1、.*?    --匹配任意个数的空格字符;

          2、[〔【]  -- 匹配字符 〔 或者【;

          3、[联办]  -- 匹配汉字 '联'或者'办';

          4、[0-9]*   --匹配任意个数的数字。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值