我想对一个varchar类型字段的尾数进行range分区,
比如此字段分别为:
'123'
'456'
'789'
则我想分别将尾数'3', '4', '9'分到第3,4,9号分表中.
在不改变现有表结构的前题下,似乎做不到啊?请高手指点一下.
比如此字段分别为:
'123'
'456'
'789'
则我想分别将尾数'3', '4', '9'分到第3,4,9号分表中.
在不改变现有表结构的前题下,似乎做不到啊?请高手指点一下.
解决方案 »
- 一个PL/SQL问题
- 今天突然在想,ORACLE是怎么进行UNDO的?
- oracle dblink sqlserver查询字符串的问题
- 在用JSP页面读取ORACLE数据时出现的错误提示,是因为什么原因啊??
- 谁能给份oracle的电子书
- 兄弟们。提问一个 可笑的基础知识
- 我创建了表空间(tablespace)aa,然后创建数据库,但怎么能确定我建的库是在aa中啊?我用dbca建库,但这个过程中没有让我选表空间的步骤
- 请问谁有p3238244_9204_LINUX.zip呀,小弟急需呀,谢谢!!!!!!!!!9I的。
- oracle中的number(10,2)等同于sql server数据库中什么类型???
- 请教一个简单的pl/sql语句
- 请帮忙看看使用关联查询或者是with.. as能否优化如下sql语句?
- oracle 增量备份问题
-- 如果你现在用的是Oracle 11g 的话,可以基于这个“varchar类型字段”创建一个虚拟字段,例如:
CREATE TABLE tt(
c1 varchar2(30),
c2 GENERATED ALWAYS AS (substr(c1,-1,1)) VIRTUAL VISIBLE
)
PARTITION BY RANGE (c2)
(partition pre_p0 values less than('0') tablespace part01,
partition p0 values less than('1') tablespace part02,
partition p1 values less than('2') tablespace part03,
partition p2 values less than('3') tablespace part04,
partition p3 values less than('4') tablespace part01,
partition p4 values less than('5') tablespace part02,
partition p5 values less than('6') tablespace part03,
partition p6 values less than('7') tablespace part04,
partition p7 values less than('8') tablespace part01,
partition p8 values less than('9') tablespace part02,
partition p9 values less than(maxvalue) tablespace part03
);-- 如上所示,可以将每个分区指定不同的表空间。insert into tt(c1) values('lym123');
insert into tt(c1) values('lym2013');
insert into tt(c1) values('lym2014');
insert into tt(c1) values('lym520');
insert into tt(c1) values('lym456');
insert into tt(c1) values('lym789');
insert into tt(c1) values('lym_tudou');
insert into tt(c1) values('lym_youku');
commit;-- 查看每个分区中有哪些数据:
select * from tt partition(p0);
select * from tt partition(pre_p0);
select * from tt partition(p9);-- 最后一个字符串的ASCII码小于“0的ASCII码”的数据将放到 pre_p0 子分区
-- 最后一个字符串的ASCII码大于等于“9的ASCII码”的数据将放到 p9 子分区-- 其实,如果你的这个字符的末位永远是数字的话,建议用list分区,这样还可以防止非法数据的插入!