SQL-запрос для разделения канала - PullRequest
0 голосов
/ 21 февраля 2019

У меня есть таблица, которая называется содержимым:

create table contents(file_name varchar2(4000), file_content clob);

Вот таблица:

file_name                                  file_content
deID.RESUL_12433287659.txt_234323456.txt   |678976|TEST|TBDKK|7865679809
deID.RESUL_34534563649.txt_345353567.txt   1|678977||TB5KK|7866709
deID.RESUL_44235345636.txt_537967875.txt   |678978|TE2T|TB4KK|78669809
deID.RESUL_35234663456.txt_423452545.txt   4|678979|TE3T|T3DKK|785679809

Мне нужно создать другую таблицу с именем data_contents, используя содержимое со следующей структурой:

file_name                                  id  number   name  address  phone
deID.RESUL_12433287659.txt_234323456.txt       678976   TEST  TBDKK    7865679809
deID.RESUL_34534563649.txt_345353567.txt    1  678977         TB5KK    7866709
deID.RESUL_44235345636.txt_537967875.txt       678978   TE2T  TB4KK    78669809
deID.RESUL_35234663456.txt_423452545.txt    4  678979   TE3T  T3DKK    785679809

Можно ли в SQL каким-либо образом отделить разделитель канала и присвоить ему определенные столбцы?

1 Ответ

0 голосов
/ 21 февраля 2019

Используйте regexp_substr и добавляйте строки без идентификатора:

with DTE as
(
    select file_name, 
           to_char(file_content) as file_content -- preconvert the clob to a varchar
    from MyTable
)
, CTE as
(
    select file_name, 
           case 
             when substr(file_content,1,1) ='|' -- If the string starts with the delimiter
               then ' '||file_content -- then add a space at the start
             else file_content 
           end as file_content
    from DTE
)

    select file_name,
           regexp_substr (file_content, '[^|]+',1, 1 ) as id,
           regexp_substr (file_content, '[^|]+',1, 2 ) as thenumber, 
           regexp_substr (file_content, '[^|]+',1, 3 ) as thename,
           regexp_substr (file_content, '[^|]+',1, 4 ) as theaddress,
           regexp_substr (file_content, '[^|]+',1, 5) as phone
    from CTE
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...