操作:
专注于为中小企业提供网站建设、网站制作服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业章丘免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了上千多家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
1、先在Excel中将这一列值加前缀,将 user_code的值变成字符型,如原来的001,002变成N001,N002,
2、将变后的Excel表导入到Oracle中,
3、用Uperdate 语句修改user_code列,去掉前缀字母“N”。
如果字符串只有开头有零,而字符串中间没有0,那么可以使用replace(字符串,'0','')
如果0开头最长的位数不长,那么可以逐个判断。
比如我可能知道这里面最长的就是连续5个0开头的,这样我就判断如果遇到5个0开头的就截掉前五位,4个0开头截掉前四位,3个0开头截掉前三位,一直到1,逐个判断使用case when可以完成.但是如果最长的0开头个数不确定,就比较麻烦了。
其实我觉得这种情况做个试验最好了,自己建个分区表,然后把每个分区建的小一点,分别插入数据看哪个分区的数据比较大就可以了 。
create table temp1
(month1 integer,
column1 varchar2(10))
PARTITION BY LIST ("MONTH1")
(PARTITION "M11" VALUES (201011)
PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOLOGGING
STORAGE(INITIAL 1024 NEXT 1024 MINEXTENTS 1 MAXEXTENTS 5242880
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) , PARTITION "M12" VALUES (201012)
PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOLOGGING
STORAGE(INITIAL 1024 NEXT 1024 MINEXTENTS 1 MAXEXTENTS 5242880
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
);
insert into temp1
values(201011,'0000000000');
commit;
insert into temp1
values(201012,'0');
commit;
declare i integer;
begin
for i in 1..16
loop
insert into temp1 select * from temp1;
commit;
end loop;
end;
select t.bytes,t.partition_name from dba_segments t where t.SEGMENT_NAME='TEMP1';
结果应该是
2097152 M11
1048576 M12
给你做个试验你就知道了
create table test
(id varchar2(6));
insert into test values ('120000');
insert into test values ('120010');
insert into test values ('120200');
insert into test values ('123000');
insert into test values ('123001');
commit;
执行第一遍:
update test set id=substr(id,1,5) where id like '%0';
commit;
此时结果:
执行第二遍:
update test set id=substr(id,1,4) where id like '%0';
commit;
后边就不举例了,也就是语句执行4遍,需要修改里边的参数。
select id
from (select id,decode(id,0,0,1) as flag from table_name) t
order by flag desc,id
;
这样id=0的部分就会排在最下面
我写一份,你试试,看看能不能通过一个SQL就能完成
select t.employee_id employee_id,
t.department_id department_id,
min(t.start_date) date,
min(t.start_date) start_date,
max(t.end_date) end_date,
(select t2.position
from table_name t2
where t2.employee_id = employee_id
and t2.department_id=department_id
and t2.end_date =end_date ) position
from table_name t
group by employee_id,
department_id,
position