Как вставить запятую в таблицу - PullRequest
0 голосов
/ 10 октября 2011

У меня есть такая таблица:

columnId1 => "word1,word2,word3"
columnId3 => "word4,word5,word6"

Я хочу создать такую ​​таблицу:

columnId1  word1
columnId1  word2
columnId1  word3
columnId2  word4
columnId2  word5
columnId2  word6

Как я могу сделать это в PLSQL?

Ответы [ 2 ]

2 голосов
/ 10 октября 2011
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 имеют различное количество запятых и тому подобное.

1 голос
/ 10 октября 2011

Некоторое время назад я написал специальную функцию для такого рода нужд.Я работал над приложением, которое обычно хотело бы хранить значения через запятую в базе данных.Мне нужно было создать функцию, чтобы выделить ее, как если бы это была таблица, и функцию для обратного, чтобы приложение было счастливым.Кажется, я не могу найти функцию, к которой в конечном итоге придумал, но я записал ее в ответе Тома на вопрос, который я задал здесь:

http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:2189860818012#28667254837962

...