MySQL正则表达式
MySQL正则表达式
1、regexp_instr
语法:regexp_instr(expr,pat[,pos[,occurrence[,return_option[,match_type]]]]) 指定位置开始是否符合正则表达式
– 匹配字符‘,’,从第一个字符串开始查找,第一次出现的位置,没有则返回0
select regexp_instr(‘abc,ABC,AAA,BBB,bbb’,’,’,1,1) from dual;
select regexp_instr(‘abc,ABC,AAA,BBB,bbb’,’-’,1,1) from dual;
– 匹配字符‘,’,从第一个字符串开始查找,第二次出现的位置,没有则返回0
select regexp_instr(‘abc,ABC,AAA,BBB,bbb’,’,’,1,2) from dual;
– 匹配字符‘,’,从第三个字符串开始查找,第一次出现的位置,没有则返回0
select regexp_instr(‘abc,ABC,AAA,BBBB,bbb’,’,’,3,1) from dual;
– 匹配字符‘,’,从第一个字符串开始查找,第二次出现的位置的后一个,没有则返回0
select regexp_instr(‘abc,ABC,AAA,BBB,bbb’,’,’,1,2,0) from dual;
– 匹配字符‘,’,从第一个字符串开始查找,第二次出现的位置的当前位置,没有则返回0
select regexp_instr(‘abc,ABC,AAA,BBB,bbb’,’,’,1,2,1) from dual;
2、regexp_like
语法:regexp_like(expr,pat[,match_ype]) 判断字符串是否符合正则表达式
– 筛选emp表中名称以A开头的员工 等同于 like ‘A%’
select * from emp where regexp_like(ename,’^A’);
select * from emp where ename like ‘A%’;
– 筛选emp表中名称以K结尾的员工 等同于 like ‘%K’
select * from emp where regexp_like(ename,‘K$’);
select * from emp where ename like ‘%K’;
– 筛选emp表中名称是A的员工 等同于=A
select * from emp where regexp_like(ename,’^A$’);
select * from emp where ename =‘A’;
– 筛选emp表中名称A开头或则B开头的员工 等同于 like ‘A%’ or like ‘B%’
select * from emp where regexp_like(ename,’1’);
select * from emp where ename like ‘A%’ or like ‘B%’;
– 等同于 like ‘A%’ or like ‘B%’ or …
select * from emp where regexp_like(ename,’2’);
– 等同于 like ‘%E’ or like ‘%R’
select * from emp where regexp_like(ename,’[ER]
′
)
−
−
等
同
于
l
i
k
e
′
s
e
l
e
c
t
∗
f
r
o
m
e
m
p
w
h
e
r
e
r
e
g
e
x
p
l
i
k
e
(
e
n
a
m
e
,
′
[
A
−
E
]
') -- 等同于 like '%A' or like '%B' or ... select * from emp where regexp_like(ename,'[A-E]
′)−−等同于like′select∗fromempwhereregexplike(ename,′[A−E]’)
– "+"表示匹配前面的子表达式一次或多次 等同于 like ‘%A%’
select * from emp where regexp_like(ename,’[A-B]+’);
select * from emp where regexp_like(ename,‘A+’);
– ""表示匹配前面的子表达式零次或多次
select * from emp where regexp_like(ename,’[0-9]’);
select * from emp where regexp_like(ename,’[a-z]’);
select * from emp where regexp_like(ename,'A’);
3、regexp_replace
语法:regexp_replace(expr,pat,new_str) 替换满足正则表达式的字符
– 去掉字符串中的指定字符
select regexp_replace(‘ABCDEFGHI’,‘A’,5) from dual;
select regexp_replace(‘ABCDEFGHI’,’[AI]’,5) from dual;
select regexp_replace(‘ABCDEFGHI’,’[A-H]’,5) from dual;
select regexp_replace(‘AABBAACCDD’,‘A+’,55) from dual;
select regexp_replace(‘AABBAACCDDCC’,’[A-C]’,5) from dual;
4、regexp_substr
语法:regexp_substr(expr,pat,pos,idx) 返回符合正则表达式的字符串
select
regexp_substr(‘192.168.125.11’,’[^.]+’,1,1) a,
regexp_substr(‘192.168.125.11’,’[^.]+’,1,2) b,
regexp_substr(‘192.168.125.11’,’[^.]+’,1,3) c,
regexp_substr(‘192.168.125.11’,’[^.]+’,1,4) d
from dual;
更多推荐



所有评论(0)