您好,我在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;
如何分开逗号?
答案 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