前言:最近接到一个让人肝疼的需求,用到了正则表达式去匹配字符串,顺便巩固一下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。