Oracle SQL regexp_substr 번호 추출 동작

리처드여

어떤 의미에서 나는 내 질문에 대답했지만 대답을 더 잘 이해하려고 노력하고 있습니다.

REGEXP_SUBSTR를 사용하는 경우 (오라클) 수 (중 단일 또는 다중 자리), 어떻게 / 왜 수정합니까의 첫 번째 항목 추출 *하고 +영향을 미치는 결과를? +내가 찾고있는 행동을 제공하고 제공 하지 않는 이유는 무엇 *입니까? *대부분의 정규식에서 기본 사용이므로 필요에 맞지 않는다는 사실에 놀랐습니다.

예를 들면 다음과 같습니다.


select test, 
regexp_substr(TEST,'\d') Pattern1,
regexp_substr(TEST,'\d*') Pattern2, 
regexp_substr(TEST,'\d+') Pattern3
from (
select '123 W' TEST from dual
union
select 'W 123' TEST from dual
);

사용은 regexp_substr(TEST,'\d*')입력 "W 123"에 대해 null 값을 반환합니다. 문자열에 '0 개 이상의'숫자가 존재하므로이 동작으로 인해 혼란 스럽습니다. 나는 또한 왜 그것이 문자열 '123 W'에서 작동하는지 혼란 스럽습니다.

내 이해는 *그것이 따르는 요소가 0 개 이상 발생 +하고 선행 요소가 1 개 이상 발생한다는 것을 의미합니다. pattern2에 대해 제공된 예 [\d*]에서 "123 W"에서 "123"을 성공적으로 캡처하지만 숫자가 0 개 이상 존재하므로 "W 123"에서 123을 가져 오지 않는 이유는 무엇입니까? 처음에는 존재하지 않습니다. 문자열의. 사용에 추가 된 [묵시적] 논리가 *있습니까?

참고 : 'W 123'에서 '123'을 캡처하는 데 도움이되는 유사한 질문을 찾으려고 잠시 동안 주위를 둘러 보았지만 가장 가까운 것은 내 요구를 충족하지 않는 regexp_replace의 변형이었습니다.

게리 마이어스

따라서 regexp_count는 \ d * 패턴과 일치하는 4 개의 하위 문자열이 있음을 나타냅니다. 세 번째는 '123'입니다. 의미는 첫 번째와 두 번째가 W와 공백에서 파생되고 소스 문자열의 한 문자를 '소비'하는 길이가 0 인 결과라는 것입니다.

select test, 
    regexp_count(TEST,'\d*') Pattern2_c, 
    regexp_substr(TEST,'\d*') Pattern2,
    regexp_substr(TEST,'\d*',1,1) Pattern2_1,
    regexp_substr(TEST,'\d*',1,2) Pattern2_2,
    regexp_substr(TEST,'\d*',1,3) Pattern2_3,
    regexp_substr(TEST,'\d*',1,4) Pattern2_4
 from (select '123 W' TEST from dual
    union
    select 'W 123' TEST from dual
    );

Oracle은 길이가 0 인 문자열과 null에 대해 이상한 점이 있습니다.

그 결과는 옳지 않다고 생각하지만, 문자열에 길이가 0 인 부분 문자열이 얼마나 많은지에 대해 컴퓨터에 깊이있는 철학적 질문을한다면, 나는 어떤 대답도하지 않을 것입니다.

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Oracle SQL regexp_substr 번호 추출 동작

분류에서Dev

Oracle SQL : Regexp_substr

분류에서Dev

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

분류에서Dev

REGEXP_SUBSTR 또는 SUBSTR 함수를 사용하여 Oracle SQL에서 "시작할 첫 번째 _ (밑줄) 이후"및 "종료 할 두 번째 _ (밑줄)"에서 하위 문자열 찾기

분류에서Dev

Oracle 10g REGEXP_SUBSTR을 사용하여 문자열 구분 기호를 사용하여 문자열을 추출하는 방법

분류에서Dev

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

분류에서Dev

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

분류에서Dev

Regexp_substr의 Oracle 쿼리

분류에서Dev

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

분류에서Dev

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

분류에서Dev

대괄호 사이의 숫자와 일치하는 ORACLE 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 줄 끝 (검색 텍스트의 chr (10)이 null을 반환 함)

분류에서Dev

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

분류에서Dev

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

분류에서Dev

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

분류에서Dev

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

분류에서Dev

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

분류에서Dev

Oracle SQL 함수 regexp_substr이 일치하는 모든 문자를 반환하지 않는 이유는 무엇입니까?

분류에서Dev

Oracle SQL 행 번호 선택

분류에서Dev

Oracle SQL 정규식 추출

분류에서Dev

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

분류에서Dev

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

분류에서Dev

Oracle 동적 호출 커서

분류에서Dev

Count instances of first word in column Oracle SQL using SUBSTR and REGEXP_COUNT

분류에서Dev

REGEXP_SUBSTR 쿼리

분류에서Dev

Excel 번호 추출

Related 관련 기사

  1. 1

    Oracle SQL regexp_substr 번호 추출 동작

  2. 2

    Oracle SQL : Regexp_substr

  3. 3

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

  4. 4

    REGEXP_SUBSTR 또는 SUBSTR 함수를 사용하여 Oracle SQL에서 "시작할 첫 번째 _ (밑줄) 이후"및 "종료 할 두 번째 _ (밑줄)"에서 하위 문자열 찾기

  5. 5

    Oracle 10g REGEXP_SUBSTR을 사용하여 문자열 구분 기호를 사용하여 문자열을 추출하는 방법

  6. 6

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

  7. 7

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

  8. 8

    Regexp_substr의 Oracle 쿼리

  9. 9

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

  10. 10

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

  11. 11

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

  12. 12

    Oracle에서 REGEXP_SUBSTR의 혼란

  13. 13

    Oracle SUM (TO_NUMBER (REGEXP_SUBSTR WITH DECIMAL NUMBER

  14. 14

    Oracle 11G REGEXP_SUBSTR 함수

  15. 15

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

  16. 16

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

  17. 17

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

  18. 18

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

  19. 19

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

  20. 20

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

  21. 21

    Oracle SQL 함수 regexp_substr이 일치하는 모든 문자를 반환하지 않는 이유는 무엇입니까?

  22. 22

    Oracle SQL 행 번호 선택

  23. 23

    Oracle SQL 정규식 추출

  24. 24

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

  25. 25

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

  26. 26

    Oracle 동적 호출 커서

  27. 27

    Count instances of first word in column Oracle SQL using SUBSTR and REGEXP_COUNT

  28. 28

    REGEXP_SUBSTR 쿼리

  29. 29

    Excel 번호 추출

뜨겁다태그

보관