1,REGEXP_LIKE :与LIKE的功能相似
2,REGEXP_INSTR :与INSTR的功能相似
3,REGEXP_SUBSTR :与SUBSTR的功能相似
4,REGEXP_REPLACE :与REPLACE的功能相似
它们在用法上与Oracle SQL 函数LIKE、INSTR、SUBSTR 和REPLACE 用法相同,
但是它们使用POSIX 正则表达式代替了老的百分号(%)和通配符(_)字符。
POSIX 正则表达式由标准的元字符(metacharacters)所构成:
-----------------------------------------------------------------------
定位符可以将一个正则表达式固定在一行的开始或结束
^ 定位符:匹配输入字符串开始的位置,在方括号表达式中使用,此时它表示不接受该字符集合
$ 定位符:前面的模式必须位于字符串的未端,如果是一个多行字符串,必须位于行尾
+ 匹配前面的子表达式一次或多次
* 匹配前面的子表达式零次或多次
() 一个子表达式开始和结束位置
| 表示两项之间选一个
{m} 匹配m次
{m,n} 至少匹配m次,但不能超过n次
-----------------------------------------------------------------------
字符簇:
[[:alpha:]] 任何字母。
[[:digit:]] 任何数字。
[[:alnum:]] 任何字母和数字。
[[:space:]] 任何白字符。
[[:upper:]] 任何大写字母。
[[:lower:]] 任何小写字母。
[[:punct:]] 任何标点符号。
[[:xdigit:]] 任何16进制的数字,相当于[0-9a-fA-F]。
create table A(NO VARCHAR2(100));
insert into A (NO) values ('0314-21431558');
insert into A (NO) values ('138-525-0347');
insert into A (NO) values ('025-4231-1318');
insert into A (NO) values ('13738460001');
insert into A (NO) values ('51666226');
insert into A (NO) values ('0352-6363182/13723523431');
insert into A (NO) values ('84938556');
insert into A (NO) values ('13873687358/0726-7463285/0736-772285');
insert into A (NO) values ('13901070238;13606871888');
insert into A (NO) values ('13311013181swb@163.com');
insert into A (NO) values ('13960775559(联系此电话)');
insert into A (NO) values ('13503666668');
insert into A (NO) values ('13943265787');
insert into A (NO) values ('130112993453');
insert into A (NO) values ('adsfasafd');
commit;
Select * from a
select * from a where regexp_like(no,'^[^[:digit:]]+');
select * from a where regexp_like(no,'^[1]');
select * from a where regexp_like(no,'^[1]$');
select * from a where regexp_like(no,'^[1]([[:digit:]]{10})([^[:digit:]]|$)');
select * from a where regexp_like(no,'^[1]([[:digit:]]{10})([^[:digit:]]|)');
select * from a where regexp_like(no,'^[1]([[:digit:]]{10})([^[:digit:]]+$)');
select * from a where regexp_like(no,'^[1]([[:digit:]]{10})([^[:digit:]]+)');
select * from a where regexp_like(no,'^[1][[:digit:]]{10}[^[:digit:]]')
select * from a where regexp_like(no,'^[1][[:digit:]]{10}[^[:digit:]]+$')
select * from a where regexp_like(no,'^[1][[:digit:]]{10}[^[:digit:]][[:digit:]]')
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10678398/viewspace-693985/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/10678398/viewspace-693985/