разделение исходных данных, чтобы указать c данные oracle - PullRequest
0 голосов
/ 24 апреля 2020

У меня есть поле источника из oracle дБ табличного типа данных VARCHAR2 (512 CHAR), которое выглядит следующим образом

%custId{str:hGl0EWJsRTwweerRkaaKsdKDsqKm0123}
%prod{str:BalanceAmount}%logistic{str:Logistic}%hiringdate{str:1999-02-28T11:10:11p}%custId{str:FpseikiD0Jt1L0Mskdww8oZBjU4La123}

, но когда я рассматриваю для своего извлечения, я должен рассматривать только данные с% cusId вытащить данные и только эти alphanumeri c данные должны быть собраны и заполнены для извлечения, проблема в том, что это только один пример из источника, может быть любое количество комбинаций, но я должен только рассмотреть% custId с% custId {str : hGl0EWJsRTwweerRkaaKsdKDsqKm0123 }

мне нужно использовать какую функцию substr, lpad?

после использования следующего запроса

SELECT
    field,
    REGEXP_SUBSTR(field, '%custId\{.*?\}') AS custId
FROM yourTable
where col_source='%prod{str:BalanceAmount}%logistic{str:Logistic}%hiringdate{str:1999-02-28T11:10:11p}%custId{str:FpseikiD0Jt1L0Mskdww8oZBjU4La123}'

Результат

% custId {str: FpseikiD0Jt1L0Mskdww8oZBjU4La123}

но ожидаемый результат

FpseikiD0Jt1L0Mskdww8oZBjU4La123

1 Ответ

0 голосов
/ 24 апреля 2020

Вы можете использовать REGEXP_SUBSTR здесь:

SELECT
    field,
    REGEXP_SUBSTR(field, '%custId\{(.*?)\}', 1, 1, NULL, 1) AS custId
FROM yourTable;
...