当前位置:首页 » 数据仓库 » oracle数据库拆分
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

oracle数据库拆分

发布时间: 2023-06-02 02:13:44

㈠ Oracle数据库字段拆分

sql">SELECTREGEXP_SUBSTR(t.PATH_IDS||',','[^,]+',1,1),
REGEXP_SUBSTR(t.PATH_IDS||',','[^,]+',1,2),
REGEXP_SUBSTR(t.PATH_IDS||',','[^,]+',1,3),
DECODE(REGEXP_SUBSTR(t.PATH_IDS||',','[^,]+',1,5),NULL,NULL,REGEXP_SUBSTR(t.PATH_IDS||',','[^,]+',1,4)),
DECODE(REGEXP_SUBSTR(t.PATH_IDS||',','[^,]+',1,5),NULL,REGEXP_SUBSTR(t.PATH_IDS||',','[^,]+',1,4),REGEXP_SUBSTR(t.PATH_IDS||',','[^,]+',1,5))
FROM机构层级关系表t

前三列根据正则匹配,获取对应的分割后的值,没有啥讲的,

第四列要判断是否存在第五列,如果不存在,则第四列要空,存在则用第四列的值

第五列要判断是否存在第五列,如果不存在,则给第四列的值,存在则用第五列的值

㈡ oracle数据库按照一定条件把表拆分为多个表

其实不需要拆分表,分区就可以,还是原来的表名,只是将原来的表分成了若干的分区,这样能起到分表的效果,还不用分成很多的表。
比如你原来的表的名字是A,那么将该表改为A1,然后从新建立一个分区表A,分区的依据是班级,也就是list分区,也就是一般意义上的列表分区表。
然后再将A1的数据插入新A表就可以了。
至于分区表的建立方式,往上很多,可以自行查找。
这样操作查询的语句不需要变,只是在不跨分区查询的情况下,相当于分成了若干张表去查询。比如查询1班的成绩,那么就是在1班的分区内,不会有2班的问题,就相当于你用一个指头就能解决问题,不会动用这个手一样。
如果分表的话,那么假设有12个班,那么就要建立12张表,这样的话,语句就要写12次,冗余太大了。

㈢ oracle 数据库 怎么把一个表中的一个字段按规律拆分,并显示出来

1、首先需要sys或system权限操作

2、桥神嫌查询需要更改表的ID

select object_id from all_objects where owner = 'ITHOME'
and object_name = 'TEST';1234

注:ITHOME为用户,TEST是要更改的表,表名要大写

3、通过ID查出该表所有字瞎咐段的顺序

select obj#, col#, name
from sys.col$
where obj# = '103756' order by col#123

4、修改顺序

update sys.col$ set col#=2 where obj#=103756 and name='AGE';update sys.col$ set col#=3 where obj#=103756 and name='NAME';12

或敏手直接在第三步的语句后面加for update进行修改

最后commit提交 并且重启Oracle服务

㈣ oracle数据库拆分字段lenth*width*higth字段

建表,模拟上面说的情况,一个字符串字段和三个数值字段,并增加一些记录。

CREATETABLEt(lenthnumber,WIDTHnumber,higthNUMBER,cuboVARCHAR2(100));
INSERTINTOtVALUES(0,0,0,'100*20*50');
INSERTINTOtVALUES(0,0,0,'200*10*40');

思路是,增加一个中间字段,用字符串赋值中间字段,逐项分离,最后删掉中间字段。

ALTERTABLEtADD(midVARCHAR2(100));
UPDATEtSETmid=cubo;
UPDATEtSETlenth=SUBSTR(mid,1,instr(mid,'*')-1),mid=SUBSTR(mid,instr(mid,'*')+1);
UPDATEtSETWIDTH=SUBSTR(mid,1,instr(mid,'*')-1),mid=SUBSTR(mid,instr(mid,'*')+1);
UPDATEtSEThigth=mid;
ALTERTABLEtDROPCOLUMNmid;