记录一次oracle正则表达式转换为mysql——mysql匹配纯数字

最近的项目需要切换oracle数据库为mysql,遇见一个正则表达式需要进行修改,在此记录下过程及心得。

由于项目隐私,下面是截取代码片段:

select *
from dual 
where regexp_like(target_column,'(^[+-]?\d{0,}\.?\d{0,}$)')

首先分析oracle正则表达式的含义:

  1. ^:匹配字符串的开始;
  2. [+ -]:表示可以匹配正号和负号;
  3. ?:匹配一次或零次出现,在此指前面的正号或负号可以出现零次或一次;
  4. \d:匹配一个数字字符;
  5. {0,}:至少匹配0次,在此指前面的数字可以出现零次以上;
  6. \.:其中\为转义字符,表示匹配字符".",在此匹配小数点;
  7. $:匹配字符串的结尾。

所以以上正则表达式表示匹配一个数字。
转换成mysql需要替换?为{0,1},\d替换为[0-9],.替换为\.(mysql转义字符为\)。

select target_column regexp '(^[+-]{0,1}[0,9]{0,}\\.{0,1}[0,9]{0,}$)'
-- 匹配时返回1,否则返回null

mysql执行结果:
1、带有正号的数字
在这里插入图片描述

2、带有负号的数字
在这里插入图片描述

3、不是数字
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值