oracle字符串清洗、拆分案例

需求描述

需求: 对给定的字符,按照点号对其进行拆分并以表的形式返回结果。

解决方法:通过 translate,结合自定义自增表、SUBSTR来实现字符串拆分。

SQL 代码

SELECT IDNO,MON,TO_DATE(MON,'YYYYMM') New_Day,SYSDATE-365*3 FROM
(SELECT i_year,IDNO,SUBSTR(ID,1,b.lv),b.lv,INSTR(ID,',',1,b.lv)-1,CASE WHEN b.lv = 1 THEN i_year||SUBSTR(ID,1,INSTR(ID,',',1,b.lv)-1)WHEN b.lv = t.LEN THEN i_year||SUBSTR(ID,INSTR(ID,',',1,b.lv-1)+1,LENGTH(ID)) WHEN b.lv > 1 AND b.lv<t.LEN THEN i_year||SUBSTR(ID,INSTR(ID,',',1,b.lv-1)+1,INSTR(ID,',',1,b.lv)-INSTR(ID,',',1,b.lv-1)-1 ) END monFROM   (SELECT i_year,i_new_date,TRIM(','  from i_new_date) ID,LENGTH(TRIM(','  from i_new_date))-LENGTH(REPLACE(TRIM(','  from i_new_date),',',''))+1 LEN,IDNO FROM(SELECT A.*,SUBSTR(longvarchar,1,4) i_year,SUBSTR(longvarchar,5,LENGTH(longvarchar)) i_date,REPLACE(translate(SUBSTR(TRIM(longvarchar),5,LENGTH(longvarchar)),'.,、~- ','######'),'#',',')i_new_dateFROM test_table A)BWHERE IDNO = '12345678')t,(select level lv from dual connect by level < 13) bwhere b.lv <=t.LEN )AWHERE TO_DATE(MON,'YYYYMM') > SYSDATE-365*3

数据示例

源数据示例:

IDNO

longvarchar

12345678

2016.1.2.4.

1234567

.2015.1.2.4.

123456

.2014.1.2.4

结果示例:

IDNO I_year longvarchar
12345678 2016 1
12345678 2016 2
12345678 2016 4

oracle字符串清洗、拆分案例相关推荐

  1. oracle sql字符拆分字符串函数,oracle-是否有在PL / SQL中拆分字符串的功能?

    oracle-是否有在PL / SQL中拆分字符串的功能? 我需要编写一个过程来规范具有由一个字符连接的多个令牌的记录. 我需要获得这些令牌来分割字符串,并将每个令牌作为新记录插入表中. Oracle ...

  2. Oracle字符串拆分

    文章目录 Oracle字符串拆分 1. 使用regexp_substr()函数 1.1 拆分aaa,bbb,ccc 1.2 拆分aaa;bbb;ccc 1.3 level作用 2. 在oracle中实 ...

  3. oracle pl sql示例,oracle PL SQL学习案例(一)

    oracle PL SQL学习案例(一) [示例1.1]  查询雇员编号为7788的雇员姓名和工资. 步骤1:用SCOTT/TIGER账户登录SQL*Plus. 步骤2:在输入区输入以下程序: /*这 ...

  4. oracle字符串提取函数,oracle字符串分割和提取函数定义

    oracle字符串分割和提取函数定义 oracle字符串分割和提取 分割 create or replace function Get_StrArrayLength ( av_str varchar2 ...

  5. ORACLE 字符串超长问题解决方案

    ORACLE 字符串超长问题解决方案 参考文章: (1)ORACLE 字符串超长问题解决方案 (2)https://www.cnblogs.com/joker-zhao/p/4893399.html ...

  6. python字符串截取split-python实现字符串完美拆分split()的方法

    函数:split() 例子 我们想要将以下字符串rule进行拆分.字符串表示的是一个规则,由"-"得到"-".我们需要将规则中的条件属性与取值分别提取出来,存放 ...

  7. python查找字符串关键词_Python字符串查找基本操作案例解析

    本篇文章小编给大家分享一下Python字符串查找基本操作案例解析,文章介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 字符串查找基本操作主要分为三个关键词:fi ...

  8. dataguru北京线下沙龙-第二部 《Oracle 索引优化思路--案例分享 -- 刘盛》

    [视频:dataguru北京线下沙龙-第二部 <Oracle 索引优化思路--案例分享 -- 刘盛> /微笑]

  9. oracle截取字符串替换,oracle字符串操作:拼接、替换、截取、查找

    '拼接'||'字符串' as Str from student; 2.使用concat(param1,param2)函数实现: select concat('拼接','字符串') as Str fro ...

最新文章

  1. CVPR 2021 顶会冠军图像分割算法全解密
  2. python文档字符串_结构化的python文档字符串,对IDE友好
  3. 33岁逃离北京,看到的是希望还是悲剧呢?
  4. 200919阶段一C++STL容器
  5. linux下mysql的数据库简单备份脚本
  6. Java集合之LinkedList
  7. 字节跳动1/3员工不支持取消大小周!库克称iPhone将采用可回收材料生产;清华博士接亲被要求现场写代码|极客头条...
  8. CSS设计指南(第3版)
  9. 【PHP面向对象(OOP)编程入门教程】18.__call()处理调用错误
  10. VISIO——word中插入visio图片 图片边缘空白裁剪
  11. 海康威视摄像头web端开发
  12. 华为手机屏幕锁屏时间设置_华为手机锁屏时间怎么设置?
  13. 计算机考证要考PS吗
  14. pacman入门使用指南
  15. 比较结构的关联词(二)
  16. oracle分区缺点,ORACLE的五种表的优缺点概述
  17. PHP 规则引擎 Hoa\Ruler
  18. 打印机显示无法连接计算机,网络打印提示:Windows无法连接到打印机,请检查打印机名并重试...
  19. 用计算机算出手机密码,怎么才能把计算机开机的密码解开
  20. Ubuntu下安装Moodle平台

热门文章

  1. wxWidgets:wxScopedCharTypeBuffer< T >类模板用法
  2. wxWidgets:wxHelpController类用法
  3. wxWidgets:wxAppConsole类用法
  4. BOOST_VMD_ASSERT_IS_SEQ宏相关的测试程序
  5. boost::fusion::iterator_range用法的测试程序
  6. boost::fusion::for_each用法的测试程序
  7. GDCM:gdcm::GroupDict的测试程序
  8. boost::contract模块实现非成员函数的测试程序
  9. DCMTK:OFerror_code的测试程序
  10. VTK:可视化之SideBySideViewports