如果字符串只有开头有零,而字符串中间没有0,那么可以使用replace(字符串,'0','')
如果0开头最长的位数不长,那么可以逐个判断.
select id
from (select id,decode(id,0,0,1) as flag from table_name) t
order by flag desc,id
;
这样id=0的部分就会排在最下面
其实我觉得这种情况做个试验最好了,自己建个分区表,然后把每个分区建的小一点,分别插入数据看哪个分区的数据比较大就可以了 .
create table temp1
(month1 integer,
PARTITION BY LIST ("MONTH1")
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
);
insert into temp1
commit;
declare i integer;
begin
loop
insert into temp1 select * from temp1;
end loop;
end;
select t.bytes,t.partition_name from dba_segments t where t.SEGMENT_NAME='TEMP1';
结果应该是
给你做个试验你就知道了
create?table?test
执行第一遍:
此时结果:
执行第二遍:
这个只能写存储过程了.
思路:
①.、遍历user_tables里面所有的表
这个要循环嵌套一个循环才能完成.
存储过程代码如下(未测试):
CREATE?OR?REPLACE?PROCEDURE?UpdateTableSetNull?IS
DECLARE?CURSOR?C_JOB?IS
SELECT?TABLE_NAME?FROM?USER_TABLES;
C_ROW??C_JOB%ROWTYPE;
VAR_TABLE_NAME?USER_TABLES.TABLE_NAME%TYPE;?
BEGIN
OPEN?C_JOB;
LOOP
FETCH?C_JOB?INTO?C_ROW;
EXIT?WHEN?C_JOB%NOTFOUND;
VAR_TABLE_NAME?:=?C_ROW.TABLE_NAME;
DECLARE
CURSOR?C_JOB_1?IS
SELECT?COLUMN_NAME?FROM?USER_TAB_COLUMNS?WHERE?TABLE_NAME?=?VAR_TABLE_NAME;
C_ROW_1??C_JOB_1%ROWTYPE;
VAR_COLUMN_NAME?USER_TAB_COLUMNS.COLUMN_NAME%TYPE;
OPEN?C_JOB_1;
FETCH?C_JOB_1?INTO?C_JOB_1;
EXIT?WHEN?C_JOB_1%NOTFOUND;
VAR_COLUMN_NAME?:=?C_ROW.COLUMN_NAME;
UPDATE?VAR_TABLE_NAME?SET?VAR_COLUMN_NAME?=?0?WHERE?VAR_COLUMN_NAME?IS?NULL;
END?LOOP;
CLOSE?C_JOB_1;
COMMIT;
CLOSE?C_JOB;
END;
END?UpdateTableSetNull;
我写一份,你试试,看看能不能通过一个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,
from table_name t
group by employee_id,
department_id,
position
以上就是土嘎嘎小编为大家整理的oracle中去0怎么写相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!