забить данные в несколько столбцов - PullRequest
1 голос
/ 08 октября 2019

Первая строка в таблице:

1A:CAD22021828,17:1B:RECEIVE GENERAL IND11 BEGUM ST:1C: C/O PNBB MAIN BRANCH 11 BEGUM ST 3-15A2:

Вторая строка в таблице:

:1A:/002429389016 CITY OF NAGAL AP IN 392H 329 :1E://NAGOLE STREET NAGAL AP :2A:/154510002 OFD DEPOSITORY LTD :

Теперь я хочу, чтобы эти данные былизагружен в другую таблицу, как показано ниже:

1-й ряд:

1A  CAD22021828,17  
1B  RECEIVE GENERAL IND 11 BEGUM ST /000061071257
1C  C/O PNBB MAIN BRANCH 11 BEGUM ST 3-15A2

2-й ряд:

1A  /002429389016 CITY OF NAGAL AP IN 392H 329
1E  //NAGOLE STREET NAGAL AO
2A  /154510002 OFD DEPOSITORY LTD

Я попытался REGEXP_SUBSTR

SELECT
 REGEXP_SUBSTR(mc_clob,':1A:([[:alnum:]]+\S+)') AS code1A,
 REGEXP_SUBSTR(mc_clob,':1B:([[:alnum:]]+\s+)') AS code1B,
 REGEXP_SUBSTR(mc_clob,':1C:([[:alnum:]]+\s+)') AS code1c
FROM tableA;

1-й ряд:

1A  CAD22021828,17  
1B  RECEIVE GENERAL IND 11 BEGUM ST /000061071257
1C  C/O PNBB MAIN BRANCH 11 BEGUM ST 3-15A2

2-й ряд:

1A  /002429389016 CITY OF NAGAL AP IN 392H 329
1E  //NAGOLE STREET NAGAL AO
2A  /154510002 OFD DEPOSITORY LTD

1 Ответ

0 голосов
/ 08 октября 2019

Это частный случай общей проблемы как разделить значения с разделителями

Попробуйте это. Я предполагаю, что у вас есть ключ в вашем tableA - здесь я называю это "id". Если у вас нет уникального ключа в этой таблице, дайте мне знать, и я перепишу его для использования rowid.

-- sample data
with tablea as (select 1 as id, ':1A:CAD22021828,17:1B:RECEIVE GENERAL IND11 BEGUM ST:1C:     C/O PNBB MAIN BRANCH 11 BEGUM ST 3-15A2:' as mc_clob from dual
           union select 2 as id, ':1A:/002429389016 CITY OF NAGAL AP IN 392H 329 :1E://NAGOLE STREET NAGAL AP :2A:/154510002 OFD DEPOSITORY LTD :' from dual)
-- query
SELECT id, 
 regexp_substr(mc_clob, '[^:]+', 1, level*2-1) as code,
 trim(regexp_substr(mc_clob, '[^:]+', 1, level*2)) as val
FROM tableA
connect by regexp_substr(mc_clob, '[^:]+', 1, level*2) is not null
      and PRIOR id =  id 
      and PRIOR SYS_GUID() is not null;

Вывод:

ID  CODE VALUE
1   1A   CAD22021828,17
1   1B   RECEIVE GENERAL IND11 BEGUM ST
1   1C   C/O PNBB MAIN BRANCH 11 BEGUM ST 3-15A2
2   1A   /002429389016 CITY OF NAGAL AP IN 392H 329
2   1E   //NAGOLE STREET NAGAL AP
2   2A   /154510002 OFD DEPOSITORY LTD

Этот запросне справится, если в ваших полях есть пустые данные. Но, возможно, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...