오라클의 REGEXP_SUBSTR

user3544668


로그 테이블이 있습니다.

with t as
 (select '16/04/2014  20:17:25 XXX. Xxxxxxx xxx xxx   [SYSTEM_JOBS] xxx [POSTPONE_JOBS] xxx [SYSTEM] xxxx [JOB2]' col
    from dual
 UNION ALL
 select '16/04/2014  20:17:25 XXX. Xxxxxxx   [SYSTEM_JOBS] xxx [POSTPONE_JOBS]' col
    from dual)
select * from t


[]를 포함하여 '['와 ']'사이의 코드를 추출하려고합니다.
내 버전 :

select regexp_substr(col, '(\[.*?\])', 1, level) col_substr,
       regexp_replace(regexp_substr(col, '(\[.*?\])', 1, level),
                      '(\[|])',
                      '') col_replace_substr
  from t
CONNECT BY regexp_substr(col, '(\[.*?\])', 1, level) is not null


내 버전은 잘 작동하지만 regexp_replace 함수없이 결과를 얻어야 합니다. 내 코드에서 하나의 함수를 사용하고 싶습니다. REGEXP_SUBSTR 로만 결과를 얻을 수 있습니까 ?

Gary_W

이 질문은 "관련"섹션에 나타 났으며 이전 질문 임에도 불구하고 여전히 관련성이 있으며 답변 할 가치가 있습니다. 코드가 제대로 작동하지 않지만 잘못된 결과를 반환하기 때문에 원본 포스터가 잘못된 것 같습니다. 그의 예에서는 대괄호로 둘러싸인 6 개의 값만있는 14 개의 행을 반환합니다. 다음은 일치 된 패턴 뒤에 줄 끝이 올 때를 허용하고 증명을 위해 행 번호와 일치 번호를 표시하는 정규식의 예입니다. 이것이 미래의 검색 자에게 도움이되기를 바랍니다.

SQL> with t(rownbr, col1) as (
    select 1, '16/04/2014  20:17:25 XXX. Xxxxxxx xxx xxx   [SYSTEM_JOBS] xxx [POSTPONE_JOBS] xxx [SYSTEM] xxxx [JOB2]' from dual
    UNION
    select 2, '16/04/2014  20:17:25 XXX. Xxxxxxx   [SYSTEM_JOBS] xxx [POSTPONE_JOBS]' from dual
   )
   SELECT rownbr, column_value match_number,
          regexp_substr(col1,'(\[.*?\])( |$)', 1, column_value, NULL, 1) col_substr,
          regexp_substr(col1,'\[(.*?)\]( |$)', 1, column_value, NULL, 1) col_replace_substr
     FROM t,
          TABLE(
            CAST(
              MULTISET(SELECT LEVEL
                          FROM dual
                          CONNECT BY LEVEL <= REGEXP_COUNT(col1, '\[.*?\]')
                      ) AS sys.OdciNumberList
            )
          )
    WHERE regexp_substr(col1,'(\[.*?\])( |$)', 1, column_value, NULL, 1) IS NOT NULL;

    ROWNBR MATCH_NUMBER COL_SUBSTR           COL_REPLACE_SUBSTR
---------- ------------ -------------------- --------------------
         1            1 [SYSTEM_JOBS]        SYSTEM_JOBS
         1            2 [POSTPONE_JOBS]      POSTPONE_JOBS
         1            3 [SYSTEM]             SYSTEM
         1            4 [JOB2]               JOB2
         2            1 [SYSTEM_JOBS]        SYSTEM_JOBS
         2            2 [POSTPONE_JOBS]      POSTPONE_JOBS

6 rows selected.

SQL>

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Regexp_substr의 Oracle 쿼리

분류에서Dev

Oracle에서 REGEXP_SUBSTR의 혼란

분류에서Dev

패턴의 무작위 발생에 대한 oracle regexp_substr

분류에서Dev

REGEXP_SUBSTR을 사용하여 문자열의 일부 추출

분류에서Dev

REGEXP_SUBSTR을 사용하여 키-값 쌍 데이터 가져 오기

분류에서Dev

SQL regexp_substr 사용시 누락 된 표현식 가져 오기

분류에서Dev

Redshift의 REGEXP_SUBSTR 함수가 예상 값을 반환하지 않습니다.

분류에서Dev

저장 프로 시저의 REGEXP_SUBSTR 함수가 null을 반환합니다.

분류에서Dev

Oracle SQL : regexp_substr을 사용하여 문자열의 첫 줄 반환

분류에서Dev

대괄호 사이의 숫자와 일치하는 ORACLE REGEXP_SUBSTR

분류에서Dev

Oracle SQL : Regexp_substr

분류에서Dev

REGEXP_SUBSTR 쿼리

분류에서Dev

SQL Oracle에서 regexp_substr을 사용하여 특정 단어 뒤의 단어 가져 오기

분류에서Dev

Oracle SQL 정규식 RegExp_SubStr 줄 끝 (검색 텍스트의 chr (10)이 null을 반환 함)

분류에서Dev

Oracle SQL : 두 문자열 사이의 blob에서 문자열 반환 (아마 REGEXP_SUBSTR 사용)

분류에서Dev

regexp_substr 결과 설명

분류에서Dev

날짜 오라클의 Substr

분류에서Dev

regexp_substr을 사용하여 두 단어 사이의 모든 문자를 캡처합니다 (문자열의 앞과 끝 포함)

분류에서Dev

Oracle REGEXP_SUBSTR은 문자의 첫 번째 발생을 무시하지만 두 번째 발생을 포함합니다.

분류에서Dev

Oracle SUM (TO_NUMBER (REGEXP_SUBSTR WITH DECIMAL NUMBER

분류에서Dev

Oracle 11G REGEXP_SUBSTR 함수

분류에서Dev

Oracle SQL regexp_substr 번호 추출 동작

분류에서Dev

Oracle SQL regexp_substr 번호 추출 동작

분류에서Dev

커서를 반환하는 함수 내에서 regexp_substr 사용

분류에서Dev

Oracle REGEXP_SUBSTR이 내 패턴으로 작동하지 않습니다.

분류에서Dev

REGEXP_SUBSTR로 텍스트를 추출해야합니다. 올바른 조합을 찾을 수 없습니다.

분류에서Dev

regexp_substr을 사용하여 Oracle에서 구분 기호로 공백 및 문자로 문자열 분할

분류에서Dev

Oracle은 oracle regexp_substr과 함께 정규식을 사용하여 json 필드를 추출합니다.

분류에서Dev

Oracle에서 REGEXP_SUBSTR을 사용하여 문자열에서 ID 번호 추출

Related 관련 기사

  1. 1

    Regexp_substr의 Oracle 쿼리

  2. 2

    Oracle에서 REGEXP_SUBSTR의 혼란

  3. 3

    패턴의 무작위 발생에 대한 oracle regexp_substr

  4. 4

    REGEXP_SUBSTR을 사용하여 문자열의 일부 추출

  5. 5

    REGEXP_SUBSTR을 사용하여 키-값 쌍 데이터 가져 오기

  6. 6

    SQL regexp_substr 사용시 누락 된 표현식 가져 오기

  7. 7

    Redshift의 REGEXP_SUBSTR 함수가 예상 값을 반환하지 않습니다.

  8. 8

    저장 프로 시저의 REGEXP_SUBSTR 함수가 null을 반환합니다.

  9. 9

    Oracle SQL : regexp_substr을 사용하여 문자열의 첫 줄 반환

  10. 10

    대괄호 사이의 숫자와 일치하는 ORACLE REGEXP_SUBSTR

  11. 11

    Oracle SQL : Regexp_substr

  12. 12

    REGEXP_SUBSTR 쿼리

  13. 13

    SQL Oracle에서 regexp_substr을 사용하여 특정 단어 뒤의 단어 가져 오기

  14. 14

    Oracle SQL 정규식 RegExp_SubStr 줄 끝 (검색 텍스트의 chr (10)이 null을 반환 함)

  15. 15

    Oracle SQL : 두 문자열 사이의 blob에서 문자열 반환 (아마 REGEXP_SUBSTR 사용)

  16. 16

    regexp_substr 결과 설명

  17. 17

    날짜 오라클의 Substr

  18. 18

    regexp_substr을 사용하여 두 단어 사이의 모든 문자를 캡처합니다 (문자열의 앞과 끝 포함)

  19. 19

    Oracle REGEXP_SUBSTR은 문자의 첫 번째 발생을 무시하지만 두 번째 발생을 포함합니다.

  20. 20

    Oracle SUM (TO_NUMBER (REGEXP_SUBSTR WITH DECIMAL NUMBER

  21. 21

    Oracle 11G REGEXP_SUBSTR 함수

  22. 22

    Oracle SQL regexp_substr 번호 추출 동작

  23. 23

    Oracle SQL regexp_substr 번호 추출 동작

  24. 24

    커서를 반환하는 함수 내에서 regexp_substr 사용

  25. 25

    Oracle REGEXP_SUBSTR이 내 패턴으로 작동하지 않습니다.

  26. 26

    REGEXP_SUBSTR로 텍스트를 추출해야합니다. 올바른 조합을 찾을 수 없습니다.

  27. 27

    regexp_substr을 사용하여 Oracle에서 구분 기호로 공백 및 문자로 문자열 분할

  28. 28

    Oracle은 oracle regexp_substr과 함께 정규식을 사용하여 json 필드를 추출합니다.

  29. 29

    Oracle에서 REGEXP_SUBSTR을 사용하여 문자열에서 ID 번호 추출

뜨겁다태그

보관