Oracle 은 쉼표 로 구 분 된 문자열 을 여러 줄 의 데이터 인 스 턴 스 로 나 누 어 상세 하 게 설명 합 니 다.
최근 에 업무 중 에 특정한 표 의 특정한 필드 를 만 나 는 것 은 데이터 내용 을 확장 할 수 있 고 정 보 는 쉼표 로 구분 되 어 생 성 된 것 입 니 다.현재 수 요 는 이 필드 데이터 에 따라 다른 표 에서 관련 내용 을 조회 하 는 것 을 보 여 주 려 고 합 니 다.첫 번 째 아 이 디 어 는 데 이 터 를 절단 하고 쉼표 를 절단 문자 로 하 는 것 입 니 다.다음은 총 결 된 실현 방법 으로 여러분 이 참고 하고 가 르 칠 수 있 도록 하 는 것 입 니 다.
1、regexp_substr 함수,정규 로 문자열 을 나 눕 니 다.함수 용법 은:(Oacle 10g+버 전이 어야 지원 합 니 다)
REGEXP_SUBSTR 함수 형식 은 다음 과 같 습 니 다.
function REGEXP_SUBSTR(String, pattern, position, occurrence, modifier)
__srcstr:정규 처리 가 필요 한 문자열
__pattern:일치 하 는 정규 표현 식 을 진행 합 니 다.
__position:시작 위치,몇 번 째 문자 부터 정규 표현 식 일치(기본 값 1)
__occurrence:몇 번 째 분 단 된 그룹 을 가 져 옵 니 다.(분 단 된 최초의 문자열 은 분 단 된 순서대로 그룹 으로 배 열 됩 니 다.)기본 값 은 1 입 니 다.
__modifier:모드('i'는 대소 문 자 를 구분 하지 않 고 검색 합 니 다.'c'대소 문 자 를 구분 하여 검색 합 니 다.기본 값 은'c'입 니 다.)정규 표현 식 의 문자 대소 문자 일치
-------------------------------------------------------------------------------------------------------------------
이 함 수 는 매번 하나의 문자열 만 추출 할 수 있 습 니 다.약간 닭 갈비 가 있 습 니 다.문자열 에 있 는 쉼표 의 수량 은 확실 하지 않 습 니 다.쉼표 가 2 개 있 으 면 추출 해 야 할 필드 는 3 개 입 니 다.추출 할 필드 가 몇 개 있 는 지 확인 하기 위해 서 는 connect by 명령 으로 동적 매개 변수 구조의 연속 값 을 구현 해 야 합 니 다.원 문자열 의 길이 와 교 체 된 문자열 의 길 이 를 줄 이면 원 문자열 의 쉼표 수 를 얻 을 수 있 습 니 다.1 을 더 하면 추출 할 필드 수 있 습 니 다.
SQL:
select bs from cs1_0 where slid='201804100038'
--
SELECT REGEXP_SUBSTR((select bs from cs1_0 where slid='201804100038'),'[^,]+',1,1,'i') as FROM DUAL;
-- ,
SELECT LEVEL FROM DUAL CONNECT BY LEVEL <=5;
-- REGEXP_SUBSTR occurrence( ) , connect by
SELECT REGEXP_SUBSTR((select bs from cs1_0 where slid='201804100038'),'[^,]+',1,LEVEL,'i') as FROM DUAL CONNECT BY LEVEL <=5;
-- ( )
select regexp_substr((select bs from cs1_0 where slid='201804100038'),'[^,]+',1,LEVEL,'i') as from dual
connect by level <= length((select bs from cs1_0 where slid='201804100038'))-length(regexp_replace((select bs from cs1_0 where slid='201804100038'),',',''))+1;
2.Type 유형 과 function 함수 의 방식 으로 이 루어 집 니 다.
1) TYPE
CREATE OR REPLACE TYPE strsplit_type_12 IS TABLE OF VARCHAR2 (4000)
2) function
create or replace function strsplit_66(p_value varchar2,p_split varchar2 ) -- ,
--
return strsplit_type_12
pipelined is
v_idx integer;
v_str varchar2(500);
v_strs_last varchar2(4000) := p_value;
begin
loop
v_idx := instr(v_strs_last, p_split);
exit when v_idx = 0;
v_str := substr(v_strs_last, 1, v_idx - 1);
v_strs_last := substr(v_strs_last, v_idx + 1);
pipe row(v_str);
end loop;
pipe row(v_strs_last);
return;
end strsplit_66;
SELECT ROWNUM , a.* FROM TABLE(strsplit_66((select bs from cs1_0 where slid='201804100038'), ',')) a;
테스트 해 보기:총결산
여기에 오 라 클 이 쉼표 로 구 분 된 문자열 을 여러 줄 로 나 눈 데이터 에 관 한 글 을 소개 합 니 다.더 많은 관련 오 라 클 이 여러 줄 로 나 눈 데이터 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 지원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
activemq 5.5 의 입문 은 설치, 시작, 데이터베이스 지속 화 를 포함한다Apache ActiveMQ 5.5.0 은 주로 유지보수 버 전 으로 130 개가 넘 는 문 제 를 복 구 했 으 며 대부분 bug 와 개선 이 었 다. Improved performance for offline d...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.