當前位置:首頁 » 數據倉庫 » 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;