regex_interval의 절로 연결
나는 이 진술의 이해를 얻을 수 없습니다 - 심지어 구글링을 한 후에도.
pv_no_list :='23,34,45,56';
SELECT DISTINCT REGEXP_SUBSTR (pv_no_list,
'[^,]+',
1,
LEVEL)
no_list
FROM DUAL
CONNECT BY REGEXP_SUBSTR (pv_no_list,
'[^,]+',
1,
LEVEL) IS NOT NULL
(콜린 하트의 표현대로)의 "학대"connected by
여기에는 좋은 목적이 있습니다: 사용함으로써.REGEXP_SUBSTR
4개의 일치 항목(23,34,45,56) 중 하나만 추출할 수 있습니다. 정규식[^,]+
쉼표를 포함하지 않는 문자열의 모든 문자 시퀀스와 일치합니다.
실행을 시도할 경우:
SELECT REGEXP_SUBSTR ('23,34,45,56','[^,]+') as "token"
FROM DUAL
얻게 될 것입니다23
.
그리고 만약 당신이 도망가려고 한다면,
SELECT REGEXP_SUBSTR ('23,34,45,56','[^,]+',1,1) as "token"
FROM DUAL
당신은 또한 얻을 것입니다.23
이제 위치 1(기본값)에서 찾기 시작하고 첫 번째 발생을 반환하는 두 가지 추가 매개 변수도 설정합니다.
이제 실행합니다.
SELECT REGEXP_SUBSTR ('23,34,45,56','[^,]+',1,2) as "token"
FROM DUAL
이번에 우리는 얻을 것입니다.34
(두 번째 발생) 및 사용3
마지막 파라미터가 반환될 때45
등등.
재귀적 사용connected by
와 함께level
모든 관련 결과를 확인할 수 있습니다(단, 반드시 원래 순서는 아닙니다!).
SELECT DISTINCT REGEXP_SUBSTR ('23,34,45,56','[^,]+',1,LEVEL) as "token"
FROM DUAL
CONNECT BY REGEXP_SUBSTR ('23,34,45,56','[^,]+',1,LEVEL) IS NOT NULL
order by 1
반환됨:
TOKEN
23
34
45
56
4개의 결과를 모두 포함할 뿐만 아니라 결과 집합에서 별도의 행으로 나눕니다!
만약 당신이 그것을 만지작거린다면, 그것은 당신에게 그 주제에 대한 더 명확한 견해를 줄 수 있을 것입니다.
connect by
와 무관한regex_substr
:
첫 번째는 계층적 쿼리를 수행하는 것입니다. http://docs.oracle.com/cd/B19306_01/server.102/b14200/queries003.htm 을 참조하십시오.
두 번째는 정규 표현을 사용하여 부분 문자열을 얻는 것입니다.
이 쿼리는 다음을 "남용"합니다.connect by
쿼리에서 행을 생성하는 기능dual
식이 전달되는 한connect by
참입니다. 새 행을 생성하고 유사 열의 값을 증가시킵니다.LEVEL
.
그리고나서LEVEL
에 전달됨regex_substr
정규식을 적용할 때 n번째 값을 가져옵니다.
SELECT DISTINCT REGEXP_SUBSTR ('23,34,45,56','[^,]+',1,LEVEL) as "token"
FROM DUAL
CONNECT BY REGEXP_SUBSTR ('23,34,45,56','[^,]+',1,LEVEL) IS NOT NULL
order by 1
@알파신:1개씩 주문해주세요, 저는 에러를 던지고 있습니다."오른쪽 단락 누락" 또한 이것을 건너뛰면 오라클 프로시저를 호출할 때 "ORA-22950: MAP 또는 ORDER 메서드 없이 개체를 주문할 수 없습니다"라는 오류가 표시됩니다.
언급URL : https://stackoverflow.com/questions/19195280/connect-by-clause-in-regex-substr
'programing' 카테고리의 다른 글
스프링 부트 2.x 응용 프로그램에서 max-http-header-size를 설정하는 방법 (0) | 2023.07.09 |
---|---|
스프링 도구 모음 - SunCertPathBuilder예외: 요청한 대상에 대한 올바른 인증 경로를 찾을 수 없습니다. (0) | 2023.07.09 |
앱이 백그라운드에 있을 때 메시지 수신 시 Firebase가 호출되지 않음 (0) | 2023.07.09 |
로그아웃 시 세션을 지우는 방법 (0) | 2023.07.09 |
.git 디렉토리가 없는 Git 클론 (0) | 2023.07.09 |