Oracle 正则表达式实例详解


本文整理自网络,侵删。

Oracle 正则表达式实例详解

FORM开发中的按行拆分需求:拆分后的行要有规律,并按前后层次排序

  需求分析如下:

     现有行: 2  ,      2.1  ,     2.2   ,   2.3           3
                     2.1.1,    2.1.2  ,    2.1.3 ,    2.2.1  , 2.1.1.1, 2.1.1.2,

对 2 进行拆分得到的 结果应该是 2.4 (2.4 是通过 查看历史记录中以2 开头,有一位小数点,小数点后一位最大值,获得该最大值+1 ,得到既是新行的后缀,保证拆分是按照前后顺序递增的)

对 2.1 进行拆分得到的应该是 :2.1.4 首先要保证 每次拆分得到的下一行都是多一位小数点 

对2.1 拆分 获取最大后缀 比较对象 时候  应该匹配前缀是2.1的 且只有两位小数点的   (排除前缀符合位数不符合的情况:2.1.1.1 ,2.1.1.2 )

对3 进行拆分 没有历史记录是以 3开头的情况 这时候 就要重新 开始拆分:得到的应该是 3.1

这里的关键就是匹配历史记录进行比较,决定拆分后的最后一位的最大值

  匹配的时候不能按照 数字的位数来判断,因为数字有可能是两位数,三位数,应该根据小数点来判断

匹配要使用到 正则表达式:

与PHP、Python一样Oracle 的正则表达式函数也是 主要由四个函数实现:相似匹配,定位查找,获取匹配子字符串,替换匹配结果(最重要)

(1)相似匹配: regexp_like() 

regexp(source_str,pattern,match_parameter)

 第一个参数:原字符串,第二个参数匹配模式,第三个参数匹配选项

第三个参数 匹配选项在这几个函数中都要相似作用(可选)

     常用: i:大小写不敏感; c:大小写敏感;          n:点号 . 不匹配换行符号;                   
                 m:多行模式;      x:扩展模式,忽略正则表达式中的空白字符。

匹配成功返回true 失败返回 false

我的使用:

IF REGEXP_LIKE(DEL_LINE_NUMBER, '^\d*\.\d*\.\d*$') THEN          --匹配只有两个小数点的数字,字符串

  模式中的符号说明:模式需要用一对双引号括起来
                                            ^ 标明字符串的开头,        $ 标明字符串的结尾 
                                            \d 匹配 一个0-9 的数字      * 号  匹配前面的字符0次或更多次
                                              \. 匹配一个点号,因为点号有其他含义,所以用\作为转义

阅读剩余部分

相关阅读 >>

dba 在linux下安装oracle database11g数据库图文教程

oracle存储过程及调用

oracle中exp,imp的使用详解

oracle常用sql查询语句部分集合(图文)

orace查询数据出现乱码的问题解决思路

oracle为啥叫甲骨文

[oracle] cpupsu补丁安装详细教程

使用oracle命令进行数据库备份与还原

oracle 11g dataguard参数详解

centeros7 安装oracle19c的方法详解

更多相关阅读请进入《oracle》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...