从表列中分隔逗号

时间:2011-10-26 10:56:32

标签: oracle csv

您好,我在Oracle 10中有一个表列,其中包含类似的字符串数组:

TERMS_TABLE

DOC_ID | TERMS_ARRAY
120 | apple,orange,banana,.....,termN

有N个术语。 我想将逗号与TERMS_ARRAY分开并将其插入另一个表

COMMA_SEP_TABLE

DOC_ID |TERM
120 | apple
120 | orange
120 | banana
..... 

我尝试这些代码,但它没有做任何事情:

 CREATE OR REPLACE SEPERATE_COMMA     IS
  l_tab DBMS_UTILITY.LNAME_ARRAY ;

 l_tablen number;
 CURSOR CUR1 IS SELECT * FROM TERMS_TABLE ;

 BEGIN
  EXECUTE IMMEDIATE ('TRUNCATE TABLE COMMA_SEP_TABLE);

  FOR R IN CUR1
  LOOP
  DBMS_UTILITY.comma_to_table (R.TERMS_ARRAY, l_tablen, l_tab);

  FOR i IN 1 .. l_tablen
  LOOP
     INSERT INTO COMMA_SEP_TABLE
          VALUES (R.DOC_ID, l_tab (i));

     COMMIT;
  END LOOP;
 END LOOP;
 END;

如何分开逗号?

1 个答案:

答案 0 :(得分:1)

.....如果您使用的是Oracle 10g及更高版本,以下是答案:

SELECT doc_id,REGEXP_SUBSTR(terms_table.terms_array,'[^,]+',1,LEVEL) term 
FROM terms_table  
CONNECT BY LEVEL <= LENGTH(REGEXP_REPLACE(terms_table.terms_array,'[^,]+')) + 1