逗號分隔值我有一個這樣的表:如何插入表
columnId1 => "word1,word2,word3"
columnId3 => "word4,word5,word6"
我想創建這樣一個表:
columnId1 word1
columnId1 word2
columnId1 word3
columnId2 word4
columnId2 word5
columnId2 word6
我怎樣才能做到這一點在PLSQL?
逗號分隔值我有一個這樣的表:如何插入表
columnId1 => "word1,word2,word3"
columnId3 => "word4,word5,word6"
我想創建這樣一個表:
columnId1 word1
columnId1 word2
columnId1 word3
columnId2 word4
columnId2 word5
columnId2 word6
我怎樣才能做到這一點在PLSQL?
create table testtable(col1 varchar2(50) , col2 varchar2(50));
insert into testtable (col1, col2)
with commadata as(
select 'word1,word2,word3' columnid1, 'word4,word5,word6' columnid2
from dual
)
select regexp_substr(columnid1
, '[^,]+'
,1
,level) as parsed_value
,
regexp_substr(columnid2
, '[^,]+'
,1
,level) as parsed_value
from commadata
connect by level <= REGEXP_COUNT(columnid1 , '[,]')+1
;
select * from testtable;
COL1 COL2
-------------------------------------------------- --------------------------------------------------
word1 word4
word2 word5
word3 word6
這是假設您正在使用10g並有權訪問正則表達式。這應該足以讓你繼續創建你的語句,注意它是脆弱的,並且如果columnId1和columnId2有不同數量的逗號等,就可以打破它。
很久以前,我爲這種需求寫了一個自定義函數。我正在開發一個應用程序,該應用程序通常需要在數據庫中存儲逗號分隔值。我必須創建一個函數來選擇它,就好像它是一個表格和一個反向函數一樣,以便應用程序很高興。我似乎無法找到我最終想出了功能,但我寫它關閉湯姆到一個問題,我在這裏問的迴應:
http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:2189860818012#28667254837962
小貓被殺害,每次你把CSV數據成關係數據庫表列 – Phil