내용으로 건너뛰기
GaramX
사용자 도구
로그인
사이트 도구
검색
도구
문서 보기
이전 판
역링크
최근 바뀜
미디어 관리자
사이트맵
로그인
>
최근 바뀜
미디어 관리자
사이트맵
현재 위치:
home
»
oracle
»
split_to_table
추적:
oracle:split_to_table
이 문서는 읽기 전용입니다. 원본을 볼 수는 있지만 바꿀 수는 없습니다. 문제가 있다고 생각하면 관리자에게 문의하세요.
===== String to Table ===== String으로부터 table얻기위한 방법 ==== Table 얻기 === <code sql> SELECT RT_SEQ, RT_VALUE FROM TABLE(FT_SPLIT_ARRAY(av_str_mail ,'|')); </code> ==== FT_SPLIT_ARRAY ==== <code sql> CREATE OR REPLACE FUNCTION FT_SPLIT_ARRAY ( av_str IN VARCHAR2 , av_split IN VARCHAR2 ) RETURN PIPE_FT_SPLIT_ARRAY_TAB PIPELINED IS /********************************************************************************* PROCEDURE NAME : FT_SPLIT_ARRAY DESCRIPTION : av_str 로 넘어온 문자열을 av_split으로 자른다음 문자열을 붙여서 반환한다. an_num에 값이 있을때는 그 값에 해당하는 자른 문자열을 반환한다. ex> SELECT FN_SPLIT( '123-456-789', '-', NULL ) FROM dual; RETURN 123456789; SELECT FN_SPLIT( '123-456-789', '-', 2 ) FROM dual; RETURN 456; RETURN TYPE : TABLE RETURN VALUE : COMMENT : ● 빈값일 때는 ' ' 스페이스를 인수로 받아야 함 **********************************************************************************/ --변수선언부 n_len NUMBER := 0; v_RtValue VARCHAR2(100 BYTE); BEGIN IF av_str IS NOT NULL THEN BEGIN -- 문자열에 해당 구분자가 몇개 있는지 구한다. SELECT LENGTH( av_str ) - LENGTH( REPLACE( av_str, av_split, '' ) ) INTO n_len FROM DUAL; EXCEPTION WHEN NO_DATA_FOUND THEN n_len := 0; WHEN OTHERS THEN n_len := 0; END; END IF; IF n_len IS NULL THEN BEGIN n_len := 0; END; END IF; FOR i IN 0..n_len LOOP --해당문자열 갯수만큼 FOR문을 돌면서 값을 구한다. SELECT NVL( REGEXP_SUBSTR( av_str, '[^'|| av_split ||']+', 1, ( i + 1 ) ), '' ) INTO v_RtValue FROM DUAL ; PIPE ROW(PIPE_FT_SPLIT_ARRAY_TYPE(I+1,v_RtValue)); END LOOP; END; </code> ==== PIPE_FT_SPLIT_ARRAY_TYPE ==== <code sql> create or replace TYPE PIPE_FT_SPLIT_ARRAY_TYPE AS OBJECT ( RT_SEQ NUMBER, RT_VALUE VARCHAR2(100) ) </code> ==== PIPE_FT_SPLIT_ARRAY_TAB ==== <code sql> create or replace TYPE PIPE_FT_SPLIT_ARRAY_TAB AS TABLE OF PIPE_FT_SPLIT_ARRAY_TYPE </code>
oracle/split_to_table.txt
· 마지막으로 수정됨: 2025/04/15 10:05 저자
127.0.0.1
문서 도구
문서 보기
이전 판
역링크
맨 위로