3,491
社区成员
发帖
与我相关
我的任务
分享
SQL> with t as
2 (select '13543364231;15989213791' str
3 from dual
4 union all
5 select '13138712139;2886905' str
6 from dual
7 union all
8 select '2871132;13686737699' str
9 from dual
10 union all
11 select '2211389/15818911218' str
12 from dual
13 union all
14 select '2295047,13413330936' str
15 from dual
16 union all
17 select '2870810,13686736353' str
18 from dual)
19 select regexp_substr(str,'[0-9]{11}',1,1) N from T;
N
------------------------------------------------
13543364231
13138712139
13686737699
15818911218
13413330936
13686736353
已选择6行。
with t as
(select '13543364231;15989213791' str
from dual
union all
select '13138712139;2886905' str
from dual
union all
select '2871132;13686737699' str
from dual
union all
select '2211389/15818911218' str
from dual
union all
select '2295047,13413330936' str
from dual
union all
select '2870810,13686736353' str
from dual)
SELECT DECODE(LENGTH(N1),11,N1,N2) N FROM
(select regexp_substr(str,'[0-9]+',1,1) N1,regexp_substr(str,'[0-9]+',1,2) N2 from T)
N
------------------------------------------------
13543364231
13138712139
13686737699
15818911218
13413330936
13686736353
已选择6行。
with t as
(select '13543364231;15989213791' str
from dual
union all
select '13138712139;2886905' str
from dual
union all
select '2871132;13686737699' str
from dual
union all
select '2211389/15818911218' str
from dual
union all
select '2295047,13413330936' str
from dual
union all
select '2870810,13686736353' str
from dual)
select decode(regexp_instr(str, '(;|;|/|,|,)'),
12,
substr(str, 1, 11),
substr(str, regexp_instr(str, '(;|;|/|,|,)') + 1))
from t;