oracle-替换中文、回车、换行、倒序截取等,从OA一堆意见里面找出你想要的审批日期

目录

前言:

一、去掉字符串里面的汉字

1、效果

 2、代码

3、解析

二、去掉换行和回车符,倒叙截取需要日期

1、效果

2、代码

 3、解析

三、总结

前言:

        在早期的OA建设中,主要是为了让流程跑的通畅,很少去考虑后期的数据分析的需求,比如我们需要获取领导审批通过的日期,但是日期是在一堆意见里面。因组织架构的问题,同一个领导的意见会包含多条记录,即多个审批日期,这时候我们需要去获取最后一个审批日期作为审批日期。下面我们先来看看现实的数据是怎么样的吧。其中打码的都是人名哈。

 oracle-替换中文、回车、换行、倒序截取等,从OA一堆意见里面找出你想要的审批日期_第1张图片

         从图片我们可以看到,里面包含了汉字、回车和换行符,下面详细说说怎么去处理吧。

一、去掉字符串里面的汉字

1、效果

 2、代码

select  '【同意】   可以先调试
    小明 2021-10-01 07:52
' old,trim(regexp_replace('【同意】   可以先调试
    小明 2021-10-01 07:52
','['||chr(128)||'-'||chr(255)||']','')) nnew FROM DUAL

3、解析

        实现的逻辑具体可参考我以前写的一篇博客介绍。

oracle替换字符串中的中文_他们叫我技术总监的博客-CSDN博客_oracle替换中文字符

二、去掉换行和回车符,倒叙截取需要日期

        通过上面的方法部分数据能满足我们的分析需求,但是我们会发现,当意见里面出现非汉字的时候,就会和日期一起展示,同时里面还存在很多换行符。如下图所示。

 

 oracle-替换中文、回车、换行、倒序截取等,从OA一堆意见里面找出你想要的审批日期_第2张图片

         如上图所示去掉汉字的字符串,存在多个日期和其他非英文字符的问题。同时里面还有大量的换行和回车符。话不多说直接上效果吧。

1、效果

oracle-替换中文、回车、换行、倒序截取等,从OA一堆意见里面找出你想要的审批日期_第3张图片

2、代码

select FIELD0065 原始数据,
trim(regexp_replace(FIELD0065,'['||chr(128)||'-'||chr(255)||']',''))  第一次处理,
substr(trim(replace(replace(trim(regexp_replace(FIELD0065,'['||chr(128)||'-'||chr(255)||']','')),CHR(10),''),chr(13),'')),-16,10)    第二次处理后
from BI.Oa_51me_Zb  where FIELD0065	   is not null 
---使用时替换表名BI.Oa_51me_Zb和字段名FIELD0065即可

 3、解析

        通过replace+CHR(10)+chr(13)去掉了回车和换行符。然后通过trim去掉里面的空格,再通过substr函数从最后16位的位置截取10为长度的字符串作为审批日期。

三、总结

        本文主要用来分享项目上遇到的小问题,同时在自己再次遇到的时候可以用来查看,快速解决问题,希望本次文章对你有空,也欢迎留言讨论其他更优解哦~

你可能感兴趣的:(oracle,java,数据库)