Oracle的正则函数之regexp_like

时间:2024-07-16 11:34:32

前言:最近接到一个让人肝疼的需求,用到了正则表达式去匹配字符串,顺便巩固一下oracle几个正则表达式的用法

例子: 找出为带小数点后两位的数字,不论正负。比如3.12,-4.56这样的。而3.145这样的就不能被选择出来。

--1 表准备
create table test_regexp
(
object varchar2(50)
);

--2 数据准备

insert into test_regexp (OBJECT)
values ('12.567');

insert into test_regexp (OBJECT)
values ('34567.89');

insert into test_regexp (OBJECT)
values ('1.23');

insert into test_regexp (OBJECT)
values ('-3223.1');

insert into test_regexp (OBJECT)
values ('-7.90');

insert into test_regexp (OBJECT)
values ('3');

insert into test_regexp (OBJECT)
values ('-99');

insert into test_regexp (OBJECT)
values ('AAAABC');

insert into test_regexp (OBJECT)
values ('acfrgAff');

insert into test_regexp (OBJECT)
values ('AfgvR');

insert into test_regexp (OBJECT)
values ('人生自古');

insert into test_regexp (OBJECT)
values ('税务司');

insert into test_regexp (OBJECT)
values ('七龙珠123ASD');

insert into test_regexp (OBJECT)
values ('七龙珠2.15');

commit;

--3

select * from test_regexp where   regexp_like(object,'^-?\d+\.\d{2}$')

--4 返回结果

34567.89
1.23
-7.90

--5 总结分析

regexp_like(目标字段名称,正则表达式)。可以在where做限制条件使用。从而select中返回符合正则表达式的限定的数据。

例如 :select 1  from dual where regexp_like('abc', 'd')。这里就不会返回任何的值;

而 select 1  from dual where regexp_like('abc', 'a')可以返回值 1。