두 개 이상의 문자가 결합 된 구분 기호를 사용하여 문자열을 검색하려고합니다.REGEXP SUBSTR 구분 기호는 2 자 이상의 조합입니다.
쿼리를 찾아주세요 난 다음 시도 :
select REGEXP_SUBSTR('[email protected][email protected]','[^[email protected]]+',1,2) from dual
필수 출력 :
45$6
출력 :
45
내가 쉽게 할 수 이해하여 사용자 정의 된 함수 [INSTR + SUBSTR 함께] 그러나 대답을 & REGEXP_SUBSTR 함께 찾고 있어요.
미리 감사드립니다.
정말 고마워요. 내 이해가 정확하다면 조언 해주십시오. '(. *?)': 도트는 모든 문자를 의미하고, *는 0 이상의 문자를 나타냅니다. 그러나 우리가 거기에 남겨두면 탐욕스런 검색이되어 문자열 끝까지 가져옵니다. 따라서 '?'는 검색을 욕심이 없도록하고 구분 기호의 반복을 찾는 첫 번째 지점에서 중지하는 것입니다. 마지막으로 분리 된 값을 얻기 위해 특수 문자를 이스케이프하는 팁과 '또는'문자열 끝을 보내 주셔서 감사합니다. – pOrinG
"욕심 많은"대 "욕심없는"(또는 "게으른") 일치에 대한 이해가 정확합니다. NON-semicolon (또는 모든 단일 문자 구분 기호)의 중단되지 않은 부분 문자열 만 검색하여 사용하고 싶은 트릭을 사용할 수 없기 때문에 ('[^;] +'과 같은) 대신에 반드시 사용해야합니다. *'또는'. +'로 구분 기호를 사용할 때까지는 욕심이없는 검색을 사용해야합니다. '*'보다는'+'의 약점을 주목하라. - 만약 여러분이 서로 바로 옆에 두개의 구분자를 가지고 있다면 그것은 NULL을 표현해야한다; 하지만 + 연산자를 사용하면 완벽하게 놓칠 수 있습니다. * 연산자도 그들을 잡습니다. – mathguy
'+'대'''의 약점이 저를 정말로 놀라게했습니다. 그것 때문에 문제가 발생하지 않는 한 그것에 대해 생각하지 않았을 것입니다. 고맙습니다. – pOrinG