Отдельные запятые от столбца таблицы - PullRequest
0 голосов
/ 26 октября 2011

Привет, у меня в 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 Ответ

1 голос
/ 22 ноября 2011

..... Вот ответ, если вы используете 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...