求教如何拆分用|分割的一堆电话;

xiedi1209 2011-09-21 04:15:20
现在有很多电话,是用【|】拼接到一起的,可是因为系统数据结构做了修改,现在要拆分出来,判断11位的,并且已数字1开头的,就认为是手机,有两个字段是放手机的tel1和tel2,还有一个字段是家庭电话字段phone,这个字段可以放一个其它类型的电话,也可以放手机,如果还有多的电话,就放到备注中,很多电话,继续用|分割。

create table tel (
lxdh varchar2(100),
tel1 varchar(11),
tel2 varchar(11),
phone varchar(20),
bz varchar(50)
);
insert into tel(lxdh) values('13811012343|01023456543|13212345432|');
insert into tel(lxdh) values('0451-4586754|02019857485|13811111111|');
insert into tel(lxdh) values('01023456543|13212345432|');
insert into tel(lxdh) values('01023456543');
insert into tel(lxdh) values('01023456543|13212345432|13411111111|13611111111|14511111111');

select * from tel;

查询出如下的样子:
...全文
325 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaobn_cn 2011-09-26
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 xiedi1209 的回复:]
phone字段可以是任意的电话形式
bz字段放多余的

我这里看了 三个手机的情况 这个正则只能出来两个手机。
[/Quote]

因为楼主你在一楼所写的需求中,phone字段是家庭电话,我理解为非手机电话,所以在正则中去除了。我13楼所写的正则的逻辑是:
TEL1字段是第1个手机,TEL2字段是第2个手机,PHONE字段是第1个非手机电话,BZ字段是去除前三个电话的剩余电话。

如果PHONE可以放置任意电话,那么使用下面的SQL:

WITH TEL AS (
SELECT '13811012343|01023456543|13212345432|' LXDH FROM DUAL UNION ALL
SELECT '0451-4586754|02019857485|13811111111|' FROM DUAL UNION ALL
SELECT '01023456543|13212345432|' FROM DUAL UNION ALL
SELECT '01023456543' FROM DUAL UNION ALL
SELECT '01023456543|13212345432|13411111111|13611111111|14511111111' FROM DUAL
)
SELECT
LXDH,
LTRIM(REGEXP_SUBSTR('|'||LXDH,'\|1[0-9]{10}',1,1),'|') TEL1,
LTRIM(REGEXP_SUBSTR('|'||LXDH,'\|1[0-9]{10}',1,2),'|') TEL2,
-- 下面的字段修改为取出去除前两个手机电话后的第1个电话号码
LTRIM(REGEXP_SUBSTR(REGEXP_REPLACE(REGEXP_REPLACE('|'||LXDH,'\|1[0-9]{10}','',1,1),'\|1[0-9]{10}','',1,1),'\|[^\|]+', 1,1),'|') PHONE,
LTRIM(REGEXP_REPLACE(REGEXP_REPLACE(REGEXP_REPLACE('|'||LXDH,'\|1[0-9]{10}','',1,1),'\|1[0-9]{10}','',1,1),'\|[^\|]+','',1,1),'|') BZ
FROM TEL;

xiedi1209 2011-09-24
  • 打赏
  • 举报
回复
[Quote=引用 25 楼 xiaobn_cn 的回复:]

引用 23 楼 bearfishshow 的回复:
昨晚想了哈,没搞出来...要是能借助java的数组那就好解决了..呵呵..
观望中...


感兴趣可以看下我在13楼给的答案,利用正则表达式求解。
[/Quote]

phone字段可以是任意的电话形式
bz字段放多余的

我这里看了 三个手机的情况 这个正则只能出来两个手机。
luoyoumou 2011-09-22
  • 打赏
  • 举报
回复
-- 呵呵,还是写错了,再改正:
-- 将mobile_mem临时表中的mobile字段的其他记录合并到备注中:
with a as (select mobile, min(rn) as rn from mobile_mem group by mobile),
b as (select rn, mobile from a order by rn)
select replace(wm_concat(b.mobile),',','|') as bz into v_bz
from b;
luoyoumou 2011-09-22
  • 打赏
  • 举报
回复
-- 当然:如果要彻底去除重复记录(上面的存储过程,在bz字段的数据,可能还存在重复的手机号),
-- 可以修改这一部分:

-- 将mobile_mem临时表中的mobile字段的其他记录合并到备注中:
with a as (select mobile, min(rn) as rn from mobile_mem group by mobile),
b as (select rn, mobile from a order by rn)
select replace(wm_concat(a.mobile),',','|') as bz into v_bz
from a;
hyj956948933 2011-09-22
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 xiaobn_cn 的回复:]

正则表达式的解决方案,要求10G以上的ORACLE版本
SQL code

WITH TEL AS (
SELECT '13811012343|01023456543|13212345432|' LXDH FROM DUAL UNION ALL
SELECT '0451-4586754|02019857485|13811111111|' FROM DUAL UNION ALL
SELECT ……
[/Quote]

oracle版本不是问题,你可以把数据导致10以上的版本去操作啊!
luoyoumou 2011-09-22
  • 打赏
  • 举报
回复
-- 注意:如果你的 tel.lxdh 字段存在重复的手机号码,本存储过程将去掉重复手机号(有重复号码以第一次出现的为准)!
luoyoumou 2011-09-22
  • 打赏
  • 举报
回复
-- 注:varchar 是 Oracle 的一个过时的数据类型,现在我们习惯将所有 varchar 类型 用 varchar2 类型代替!

drop table tel purge;

create table tel (
lxdh varchar2(100),
tel1 varchar2(11),
tel2 varchar2(11),
phone varchar2(20),
bz varchar2(50)
);
insert into tel(lxdh) values('13811012343|01023456543|13212345432|');
insert into tel(lxdh) values('0451-4586754|02019857485|13811111111|');
insert into tel(lxdh) values('01023456543|13212345432|');
insert into tel(lxdh) values('01023456543');
insert into tel(lxdh) values('01023456543|13212345432|13411111111|13611111111|14511111111');

-- 先:创建一个临时表用以存放tel表每条记录的lxdh字段分割出来的号码!
CREATE GLOBAL TEMPORARY TABLE mobile_mem(
rn number(18,0), -- 按tel表中 v_lxdh中号码的顺序编号
mobile varchar2(200)
) ON COMMIT PRESERVE ROWS;

-- 创建存储过程,用以解析 tel 表中的 lxdh 字段,并将符合要求的数据更新到 tel1、tel2、phone、bz 字段中!
CREATE OR REPLACE PROCEDURE p_phone_ins
IS
v_rowid rowid;
v_lxdh tel.lxdh%type;
v_tel1 tel.tel1%type;
v_tel2 tel.tel2%type;
v_phone tel.phone%type;
v_bz tel.bz%type;
CURSOR cur is SELECT rowid, tel.lxdh FROM tel order by rowid;
BEGIN
for i in cur loop
v_rowid := i.rowid;
v_lxdh := i.lxdh||'|';
insert into mobile_mem(rn, mobile)
with a as ( select v_lxdh mobile from dual )
select level as rn, REGEXP_SUBSTR(a.mobile,'[^| ]+',1,level)
from a
connect by level<=length(v_lxdh)-length(replace(v_lxdh,'|',''));

-- 删除手机号为空的数据行:
delete from mobile_mem where mobile is null;

-- 初始化一些变量
v_tel1 := '';
v_tel2 := '';
v_phone := '';
v_bz := '';

-- 获取手机号,插入 v_tel1 变量
select a.mobile into v_tel1
from (select m.rn, m.mobile from mobile_mem m
where length(m.mobile)=11 -- 长度为 11 位
and m.mobile like '1%' -- 且手机号以 1 开头
union all
select 999999999 as rn, '' as mobile from dual
order by rn asc ) a
where rownum<=1;

-- 获取手机号,插入 v_tel2 变量
-- 如果存在符合要求的第一个手机号,则继续查找是否有符合要求的第二个手机号(如果第一个手机号码都获取不了(为空),就无需再查找一次啦)
if v_tel1 is not null then
begin
delete from mobile_mem where mobile=v_tel1; -- 手机号一旦获取,就可以从临时表中删除这个号码啦
select a.mobile into v_tel2
from (select m.rn, m.mobile
from mobile_mem m
where m.mobile<>v_tel1 -- 排除第一次已经获取的号码
and length(m.mobile)=11 -- 长度为 11 位
and m.mobile like '1%' -- 且手机号以 1 开头
union all
select 999999999 as rn, '' as mobile from dual
order by rn asc ) a
where rownum<=1;
if v_tel2 is not null then
delete from mobile_mem where mobile=v_tel2; -- 手机号一旦获取,就可以从临时表中删除这个号码啦
end if;
end;
end if;

-- 获取其他号码,插入 v_phone 变量
select a.mobile into v_phone
from (select m.rn, m.mobile from mobile_mem m
union all
select 999999999 as rn, '' as mobile from dual
order by rn asc ) a
where rownum<=1;

if v_phone is not null then
delete from mobile_mem
where mobile=v_phone; -- 手机号一旦获取,就可以从临时表中删除这个号码啦
end if;


-- 将mobile_mem临时表中的mobile字段的其他记录合并到备注中:
with a as (select rn, mobile from mobile_mem order by rn)
select replace(wm_concat(a.mobile),',','|') as bz into v_bz
from a;

-- 更新原表记录:(当然:你也可以把每次分析后的 rowid、v_tel1、t_tel2、v_phone、v_bz 插入到另外一个临时表,最后一次性用rowid关联更新!
update tel
set tel1=v_tel1, tel2=v_tel2, phone=v_phone, bz=v_bz
where rowid=v_rowid;
dbms_output.put_line('v_tel1: '||v_tel1||' v_tel2: '||v_tel2||' v_phone: '||v_phone||' v_bz: '||v_bz);

-- 本条记录解析完毕,删除临时表中的记录
DELETE FROM mobile_mem;

-- 提交
COMMIT;
end loop;

END;
/

-- 执行存储过程:
set serveroutput on;
exec p_phone_ins();

-- 验证数据:
select * from tel;
luoyoumou 2011-09-22
  • 打赏
  • 举报
回复
-- 注:varchar 是 Oracle 的一个过时的数据类型,现在我们习惯将所有 varchar 类型 用 varchar2 类型代替!

drop table tel purge;

create table tel (
lxdh varchar2(100),
tel1 varchar2(11),
tel2 varchar2(11),
phone varchar2(20),
bz varchar2(50)
);
insert into tel(lxdh) values('13811012343|01023456543|13212345432|');
insert into tel(lxdh) values('0451-4586754|02019857485|13811111111|');
insert into tel(lxdh) values('01023456543|13212345432|');
insert into tel(lxdh) values('01023456543');
insert into tel(lxdh) values('01023456543|13212345432|13411111111|13611111111|14511111111');

-- 先:创建一个临时表用以存放tel表每条记录的lxdh字段分割出来的号码!
CREATE GLOBAL TEMPORARY TABLE mobile_mem(
rn number(18,0), -- 按tel表中 v_lxdh中号码的顺序编号
mobile varchar2(200)
) ON COMMIT PRESERVE ROWS;


CREATE OR REPLACE PROCEDURE p_phone_ins
IS
v_rowid rowid;
v_lxdh tel.lxdh%type;
v_tel1 tel.tel1%type;
v_tel2 tel.tel2%type;
v_phone tel.phone%type;
v_bz tel.bz%type;
CURSOR cur is SELECT rowid, tel.lxdh FROM tel order by rowid;
BEGIN
for i in cur loop
v_rowid := i.rowid;
v_lxdh := i.lxdh||'|';
insert into mobile_mem(rn, mobile)
with a as ( select v_lxdh mobile from dual )
select level as rn, REGEXP_SUBSTR(a.mobile,'[^| ]+',1,level)
from a
connect by level<=length(v_lxdh)-length(replace(v_lxdh,'|',''));

-- 删除手机号为空的数据行:
delete from mobile_mem where mobile is null;

-- 初始化一些变量
v_tel1 := '';
v_tel2 := '';
v_phone := '';
v_bz := '';

-- 获取手机号,插入 v_tel1 变量
select a.mobile into v_tel1
from (select m.rn, m.mobile from mobile_mem m
where length(m.mobile)=11 -- 长度为 11 位
and m.mobile like '1%' -- 且手机号以 1 开头
union all
select 999999999 as rn, '' as mobile from dual
order by rn asc ) a
where rownum<=1;

-- 获取手机号,插入 v_tel2 变量
-- 如果存在符合要求的第一个手机号,则继续查找是否有符合要求的第二个手机号(如果第一个手机号码都获取不了(为空),就无需再查找一次啦)
if v_tel1 is not null then
begin
delete from mobile_mem where mobile=v_tel1; -- 手机号一旦获取,就可以从临时表中删除这个号码啦
select a.mobile into v_tel2
from (select m.rn, m.mobile
from mobile_mem m
where m.mobile<>v_tel1 -- 排除第一次已经获取的号码
and length(m.mobile)=11 -- 长度为 11 位
and m.mobile like '1%' -- 且手机号以 1 开头
union all
select 999999999 as rn, '' as mobile from dual
order by rn asc ) a
where rownum<=1;
if v_tel2 is not null then
delete from mobile_mem where mobile=v_tel2; -- 手机号一旦获取,就可以从临时表中删除这个号码啦
end if;
end;
end if;

-- 获取其他号码,插入 v_phone 变量
select a.mobile into v_phone
from (select m.rn, m.mobile from mobile_mem m
union all
select 999999999 as rn, '' as mobile from dual
order by rn asc ) a
where rownum<=1;

if v_phone is not null then
delete from mobile_mem
where mobile=v_phone; -- 手机号一旦获取,就可以从临时表中删除这个号码啦
end if;


-- 将mobile_mem临时表中的mobile字段的其他记录合并到备注中:
with a as (select rn, mobile from mobile_mem order by rn)
select replace(wm_concat(a.mobile),',','|') as bz into v_bz
from a;

-- 更新原表记录:(当然:你也可以把每次分析后的 rowid、v_tel1、t_tel2、v_phone、v_bz 插入到另外一个临时表,最后一次性用rowid关联更新!
update tel
set tel1=v_tel1, tel2=v_tel2, phone=v_phone, bz=v_bz
where rowid=v_rowid;
dbms_output.put_line('v_tel1: '||v_tel1||' v_tel2: '||v_tel2||' v_phone: '||v_phone||' v_bz: '||v_bz);

-- 本条记录解析完毕,删除临时表中的记录
DELETE FROM mobile_mem;

-- 提交
COMMIT;
end loop;

END;
/

-- 执行存储过程:
set serveroutput on;
exec p_phone_ins();

-- 验证数据:
select * from tel;
cosio 2011-09-22
  • 打赏
  • 举报
回复
忘记说,数据的最后一位我都加了"|",如果你现有数据没有
你就 case when substr(lxdh,length(lxdh)-1,1)<>'|' then lxdh||'|' else lxdh end lxdh
来处理!
cosio 2011-09-22
  • 打赏
  • 举报
回复
中间有些地方可能要根据一些实际的数据做调节.
如: case when tel1<>tel3 then tel3 else ''end tel3,
case when tel4<>tel2 then tel4 else ''end tel4,


你可以根据实际的数据在这里做一下调试!
cosio 2011-09-22
  • 打赏
  • 举报
回复
select lxdh,tel1,tel2,phone2, case when length(nvl(phone1,tel3||'|'||tel4))<10 then replace(nvl(phone1,tel3||'|'||tel4),'|') else nvl(phone1,tel3||'|'||tel4) end BZ
from
(
select lxdh,nvl(nvl(tel1,tel3),tel4) tel1,nvl(tel2,tel4) tel2,
case when tel1<>tel3 then tel3 else ''end tel3,
case when tel4<>tel2 then tel4 else ''end tel4,
phone1,phone2
from
(
select lxdh,max(case when rn=4 and substr(str2,1,1)='1' then str2 end) tel1,
max(case when rn=3 and substr(str2,1,1)='1' then str2 end) tel2,
max(case when rn=2 and substr(str2,1,1)='1' then str2 end) tel3,
max(case when rn=1 and substr(str2,1,1)='1' then str2 end) tel4,
max(case when rn=1 and substr(str2,1,1)='0' then str2 end) phone1,
max(case when rn=0 and substr(str2,1,1)='0' then str2 end) phone2
from
(
select lxdh,str2,row_number()over(partition by lxdh order by substr(str2,1,2))-1 rn
from
(
select lxdh,str2,m from
(
select distinct lxdh,str2,m from
(
select lxdh, substr(lxdh, instr(lxdh,'|',1,level)+1,
instr(lxdh,'|',1,level+1)-instr(lxdh,'|',1,level)-1) as str2
,level m
from tel connect by level <=4
) a
union all
select distinct lxdh,substr(lxdh, 1,instr(lxdh,'|',1)-1) str1,0
from tel
) where str2 is not null
order by lxdh
)
order by lxdh
)

group by lxdh
)
)

--result:

1 01023456543| 01023456543
2 01023456543|13212345432| 13212345432 13212345432 01023456543
3 01023456543|13212345432|13411111111|13611111111|14511111111| 14511111111 13611111111 01023456543 13411111111|13212345432
4 0451-4586754|02019857485|13811111111| 13811111111 02019857485 0451-4586754
5 13811012343|01023456543|13212345432| 13811012343 13212345432 01023456543


xiaobn_cn 2011-09-22
  • 打赏
  • 举报
回复
正则表达式的解决方案,要求10G以上的ORACLE版本

WITH TEL AS (
SELECT '13811012343|01023456543|13212345432|' LXDH FROM DUAL UNION ALL
SELECT '0451-4586754|02019857485|13811111111|' FROM DUAL UNION ALL
SELECT '01023456543|13212345432|' FROM DUAL UNION ALL
SELECT '01023456543' FROM DUAL UNION ALL
SELECT '01023456543|13212345432|13411111111|13611111111|14511111111' FROM DUAL
)
SELECT
LXDH,
LTRIM(REGEXP_SUBSTR('|'||LXDH,'\|1[0-9]{10}',1,1),'|') TEL1,
LTRIM(REGEXP_SUBSTR('|'||LXDH,'\|1[0-9]{10}',1,2),'|') TEL2,
LTRIM(REGEXP_SUBSTR(REGEXP_REPLACE('|'||LXDH,'\|1[0-9]{10}',''), '[^\|]+',1),'|') PHONE,
LTRIM(REGEXP_REPLACE(REGEXP_REPLACE(REGEXP_REPLACE('|'||LXDH,'\|1[0-9]{10}','',1,1),'\|1[0-9]{10}','',1,1),'\|[^\|]+','',1,1),'|') BZ
FROM TEL;

-- 执行结果
1 13811012343|01023456543|13212345432| 13811012343 13212345432 01023456543
2 0451-4586754|02019857485|13811111111| 13811111111 0451-4586754 02019857485|
3 01023456543|13212345432| 13212345432 01023456543
4 01023456543 01023456543
5 01023456543|13212345432|13411111111|13611111111|14511111111 13212345432 13411111111 01023456543 13611111111|14511111111
litianci2002 2011-09-22
  • 打赏
  • 举报
回复
instr('13811012343|01023456543|13212345432|','|',1,1)
先取出第一个 | 的位置 Location,
那么第一个号码就是,
substr('13811012343|01023456543|13212345432|',1,Location-1)

那第二个号码就是 第一个 | 和第二个 | 之间的数
原理同上
循环即可。。。。。。
reg13141 2011-09-22
  • 打赏
  • 举报
回复
create or replace procedure test is
lxdhs varchar2(3000);
lxdhs1 varchar2(3000);
lxdhs2 varchar2(3000);
lxdhs3 varchar2(3000);
lxdhs4 varchar2(3000);
lxdhsa varchar2(30000);
lxdhsw varchar2(30000);
count1 integer;
a varchar2(30000);
b varchar2(30000);
/*
现在有很多电话,是用【|】拼接到一起的,可是因为系统数据结构做了修改,
现在要拆分出来,判断11位的,并且已数字1开头的,就认为是手机,有两个字段是放手机的tel1和tel2,
还有一个字段是家庭电话字段phone,这个字段可以放一个其它类型的电话,也可以放手机,如果还有多的电话,
就放到备注中,很多电话,继续用|分割。


create table tel (
lxdh varchar2(100),
tel1 varchar(11),
tel2 varchar(11),
phone varchar(20),
bz varchar(50)
);
insert into tel(lxdh) values('13811012343|01023456543|13212345432|') ;
insert into tel(lxdh) values('0451-4586754|02019857485|13811111111|');
insert into tel(lxdh) values('01023456543|13212345432|');
insert into tel(lxdh) values('01023456543');
insert into tel(lxdh) values('01023456543|13212345432|13411111111|13611111111|14511111111');

select * from tel;



*/
begin
for rec in (select lxdh from tel ) loop
lxdhs1 :='';
lxdhs2 :='';
lxdhs3 :='';
lxdhs4 :='';

lxdhs :=rec.lxdh;
if (length(lxdhs) <>0) then
--判断有几个
count1 :=length(lxdhs)-length(replace(lxdhs,'|'));
--就一个
if (count1=0) then
lxdhs1 :=lxdhs;

--判断类型
--if(substr(lxdhs1,1,1) =1 and length(lxdhs1)=11)then

end if;

if (count1=2) then
lxdhs1 :=substr(lxdhs,1,instr(lxdhs,'|')-1);
lxdhsa :=substr(lxdhs,instr(lxdhs,'|')+1);
lxdhs2 :=substr(lxdhsa,1,instr(lxdhsa,'|')-1);


end if;

if (count1=3) then
lxdhs1 :=substr(lxdhs,1,instr(lxdhs,'|')-1);
lxdhsa :=substr(lxdhs,instr(lxdhs,'|')+1);
lxdhs2 :=substr(lxdhsa,1,instr(lxdhsa,'|')-1);
lxdhsa :=substr(lxdhsa,instr(lxdhsa,'|')+1);
lxdhs3 :=substr(lxdhsa,1,instr(lxdhsa,'|')-1);
end if;

if (count1 >= 4) then
lxdhs1 :=substr(lxdhs,1,instr(lxdhs,'|')-1);
lxdhsa :=substr(lxdhs,instr(lxdhs,'|')+1);
lxdhs2 :=substr(lxdhsa,1,instr(lxdhsa,'|')-1);
lxdhsa :=substr(lxdhsa,instr(lxdhsa,'|')+1);
lxdhs3 :=substr(lxdhsa,1,instr(lxdhsa,'|')-1);
lxdhs4 :=substr(lxdhsa,instr(lxdhsa,'|')+1);

update tel set bz=lxdhs4 where lxdh=lxdhs;
end if;


for ir in (select a from (select lxdhs1 a from dual
union all select lxdhs2 from dual
union all select lxdhs3 from dual
) where a is not null) loop
lxdhsw :=ir.a;

select tel1 ,phone into a,b from tel where lxdh=lxdhs;

if(substr(lxdhsw,1,1) =1 and length(lxdhsw)=11)then
if a is null then
update tel set tel1=lxdhsw where lxdh=lxdhs;
else
update tel set tel2=lxdhsw where lxdh=lxdhs;
end if;
else
if b is null then
update tel set phone=lxdhsw where lxdh=lxdhs;
else
update tel set bz=lxdhsw where lxdh=lxdhs;
end if;
end if;

end loop;
end if;
commit;
end loop;

end test;
xiaobn_cn 2011-09-22
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 bearfishshow 的回复:]
昨晚想了哈,没搞出来...要是能借助java的数组那就好解决了..呵呵..
观望中...
[/Quote]

感兴趣可以看下我在13楼给的答案,利用正则表达式求解。
coolkisses 2011-09-22
  • 打赏
  • 举报
回复
如果数据量不大,最简单的办法,就是用excel中的分列
灰哥 2011-09-22
  • 打赏
  • 举报
回复
昨晚想了哈,没搞出来...要是能借助java的数组那就好解决了..呵呵..
观望中...
xiedi1209 2011-09-21
  • 打赏
  • 举报
回复
诶 求助阿
xiedi1209 2011-09-21
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 cosio 的回复:]

好了,刚才不好意思,错误理解你的意思,用9i帮你写一下!
[/Quote]

嗯 现在是10
xiedi1209 2011-09-21
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 yangqm22 的回复:]

还需要用位数判断吗?不是有分隔符吗?直接使用分隔符取出来不就可以了。
[/Quote]

因为是老系统 是拼一起的 现在改了结构 所以手机号要限定住11位 1开头,我们就认为是手机了。不是手机不能填进去。phone这个字段随意一个电话。
再放不进去的 只能扔备注里了
加载更多回复(7)

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧