Разделить запятую с помощью Oracle - PullRequest
0 голосов
/ 04 февраля 2019

У меня есть запрос, который вытягивает содержимое текста, разделенного запятой, точно так же, как это:

INSERVICE JOB #: N19020200001 
SERVICE_CENTER:SBY,OH_CIRCUIT:MALTA8501,CREW:3675,URD_PRINT:STG-123/S1,FEEDER:PFB969,ISOLATED_1:SCC-1-B969,ISOLATED_2:UDTB969-5,RECONDUCTOR:Y,JACKETED_CABLE:N,CABLE_CART:N,LIVE_FRONT:N,BOOM:null,BACK_HOE:null,EASY_HAULING:null

Есть ли способ в SQL, я могу выбрать / разбить его на отдельные поля, как показано ниже (оно всегда соответствует описанному выше):

enter image description here

1 Ответ

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

У меня есть пользовательская функция парсера строк, которую вы можете использовать ...

ПРИМЕЧАНИЕ: Для заголовков вы можете заменить их как REPLACE ('HEADER', '') и получить значения с запятыми ...

Вы можете проверить код ниже и использовать его в своей базе данных:

  FUNCTION STRING_PARSER(VAL VARCHAR2, POSITION VARCHAR2, DELIMITER VARCHAR2) RETURN VARCHAR2 IS
    v_pos3 number;
    v_pos4 number;
  BEGIN

    /* Return 3rd occurrence of '_' */
    v_pos3 := INSTR(VAL, DELIMITER, 1, POSITION) + 1;

    /* Return 4rd occurrence of '_' */
    v_pos4 := INSTR(VAL, DELIMITER, 1, POSITION + 1);

    return SUBSTR(VAL, v_pos3, v_pos4 - v_pos3);

  END;

Использование:

select report_tools_pkg.string_parser(',1,2,3',2,',') from dual

Примечание: Добавить ',' ||имя столбца к вашему sql, если вы хотите, чтобы вы использовали, это как есть ...

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