У меня есть требование, в котором я должен принимать данные только между двумя специальными символами. Первый и второй персонажи.Получить текст между двумя специальными символами в orcale
Ex: KVN REG#HENDRI#AEP: 6256765058812#KERG00101258#875303069817#THT914000
Здесь мне нужны данные между первой # и второй. Я собрал данные из разных источников и написал запрос. я просто хочу знать более простую форму запроса, в которой мне не нужно будет вводить функцию rownum.
Запрос:
select b.name as v_custname
from (select a.*, rownum rnum
from (SELECT regexp_substr(token, '[^:]+', 1, 1) name
FROM (
SELECT regexp_substr(s, '[^\#]+', 1, lvl) token, lvl
FROM (
SELECT s, LEVEL lvl FROM (select 'KVN REG#HENDRI#AEP: 6256765058812#KERG00101258#875303069817#THT914000' s from dual)
CONNECT BY LEVEL < LENGTH(s) - LENGTH(REPLACE(s, '#'))
)
)) a
where rownum <= 2) b
where rnum >= 2;
Отлично, работает очень хорошо. Теперь я могу легко получить данные, что было действительно полезно и намного проще, чем предыдущий запрос. Большое вам спасибо за помощь @a_horse_with_no_name –