--字符串从头到尾都是数字,即整个字符串是数字 regexp_like(字符串,‘^[0-9]+$‘) 返回boolean,常用于where条件
select * from (
select ‘a123‘ s1 from dual
union all select ‘123‘ s1 from dual
union all select null str from dual
union all select ‘1‘ s1 from dual
) where regexp_like(s1,‘^[0-9]+$‘)
;
123
1
--返回日期格式如2018-05-16
select * from (
select ‘0123-45-15-8‘ s1 from dual
union all select ‘0981-789abcd‘ s1 from dual
union all select ‘2018-05-16‘ s1 from dual
union all select null str from dual
union all select ‘abc012-1598‘ s1 from dual
) where regexp_like(s1,‘^\d{4}-\d{2}-\d{2}$‘)
;
2018-05-16
-----只取数字部分,字符替换掉
select id,regexp_replace(a1,‘[^0-9]‘) from (
select 1 id,‘1‘ a1 from dual union all
select 2 id,‘a1b89‘ a1 from dual union all
select 3 id,‘ ‘ a1 from dual union all
select 4 id,null a1 from dual union all
select 5 id,‘198c70205‘ a1 from dual
) ;
1 1
2 189
3
4
5 19870205
-----找出含有 xf 或 AB 的
select * from (
select 1 id, ‘zfood‘ a1 from dual union all
select 2 id, ‘xfood‘ a1 from dual union all
select 3 id, ‘Z021‘ a1 from dual union all
select 4 id, ‘cfood‘ a1 from dual union all
select 5 id, ‘AB78‘ a1 from dual union all
select 6 id, ‘x‘ a1 from dual
) where regexp_like(a1,‘xf|AB‘)
2 xfood
4 AB78
-----找出含有 x 或 f 或 A 或 B 的
select * from (
select 1 id, ‘zfood‘ a1 from dual union all
select 2 id, ‘xfood‘ a1 from dual union all
select 3 id, ‘Z021‘ a1 from dual union all
select 4 id, ‘cfood‘ a1 from dual union all
select 5 id, ‘AB78‘ a1 from dual union all
select 6 id, ‘x‘ a1 from dual
) where regexp_like(a1,‘[xf|AB]‘)
1 zfood
2 xfood
4 cfood
5 AB78
6 x
小结:
^放在[]外表示开头,放在[]里面表示非;
$表示结尾;
+表示一个或多个;
\d和[0-9]都表示数字;
{4}表示4个;
[]表示里面的字符一个一个匹配;
|表示或者,没有[]的|表示多个字符一起匹配;
原文:https://www.cnblogs.com/jiangqingfeng/p/10955541.html