前言:最近接到一個讓人肝疼的需求,用到了正則表達式去匹配字符串,順便鞏固一下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。