>데이터 베이스 >MySQL 튜토리얼 >구분 기호의 가장 먼 발생을 기반으로 Oracle SQL에서 문자열을 분할하는 방법은 무엇입니까?

구분 기호의 가장 먼 발생을 기반으로 Oracle SQL에서 문자열을 분할하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2025-01-05 18:10:391017검색

How to Split a String in Oracle SQL Based on the Furthest Occurrence of a Delimiter?

Oracle SQL을 사용하여 구분 기호 위치로 문자열 분할

문자열 작업 시 일반적인 작업은 문자열을 기준으로 더 작은 세그먼트로 분할하는 것입니다. 특정 구분 기호. 그러나 문자열 내에서 구분 기호 위치가 달라지면 분할이 더욱 복잡해집니다.

문제 설명

"F/P/O"와 같은 문자열이 있고 "/" 구분 기호의 가장 먼 부분으로 분할하려고 합니다. 원하는 결과는 문자열을 "F/P"와 "O"의 두 부분으로 분리하는 것입니다.

초기 시도

다음 SQL 문은 문자열을 분할하려고 시도합니다. SUBSTR 및 INSTR 함수를 사용하여 문자열을 검색합니다.

SELECT Substr('F/P/O', 1, Instr('F/P/O', '/') - 1) part1, 
       Substr('F/P/O', Instr('F/P/O', '/') + 1)    part2 
FROM   dual

그러나 이 쿼리는 예기치 않은 결과를 생성하여 문자열을 다음으로 분할합니다. "F" 및 "/P/O"

해상도

INSTR 기능 사용에 문제가 있습니다. 기본적으로 INSTR은 가장 먼 구분 기호가 아닌 첫 번째 구분 기호를 검색합니다. 가장 먼 구분 기호를 찾으려면 문자열 끝에서 검색하도록 INSTR 함수를 수정해야 합니다.

SELECT SUBSTR(str, 1, Instr(str, '/', -1, 1) -1) part1,
         SUBSTR(str, Instr(str, '/', -1, 1) +1) part2
FROM DATA

끝에서 검색을 시작하여(음수 start_position -1로 표시됨) INSTR 함수는 구분 기호가 마지막으로 나타나는 위치를 찾아 그에 따라 문자열을 "F/P"와 "O"로 분할합니다. 이 접근 방식을 사용하면 문자열에 여러 개의 구분 기호가 있는 경우에도 가장 먼 위치에서 분할이 발생합니다.

위 내용은 구분 기호의 가장 먼 발생을 기반으로 Oracle SQL에서 문자열을 분할하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.