STRING_TO_ARRAY( str1, str2 )
PostgreSQL 에서만 지원하는 함수이며 str1 를 str2 문자열로 구분하는 함수입니다.
또한 구분된 문자열을 배열변수에 담을 수 있습니다.
이기종 데이터베이스에서는 지원하지 않는 함수여서 위 함수 역할을 하는 프로시져를 만들어 보았습니다.
PostgreSQL
STRING_TO_ARRAY 함수의 사용법 입니다.
postgres=# SELECT STRING_TO_ARRAY('ABC;DEF;GHI', ';'); string_to_array ----------------- {ABC,DEF,GHI} (1 row)
위의 ABC, DEF, GHI 를 PostgreSQL Procedure(혹은 Function) 배열변수에 담는 방법입니다.
CREATE OR REPLACE FUNCTION STRING_TO_ARRAY_TEST () RETURNS integer AS $BODY$ DECLARE ta Text; tc Text[]; BEGIN ta = 'ABC;DEF;GHI'; tc = STRING_TO_ARRAY(ta, ';'); RAISE Notice 'STRING_TO_ARRAY tc[1]=%', tc[1]; RAISE Notice 'STRING_TO_ARRAY tc[2]=%', tc[2]; RAISE Notice 'STRING_TO_ARRAY tc[3]=%', tc[3]; RETURN 1; END; $BODY$ LANGUAGE plpgsql VOLATILE ; CREATE FUNCTION
postgres=# SELECT STRING_TO_ARRAY_TEST(); NOTICE: STRING_TO_ARRAY tc[1]=ABC NOTICE: STRING_TO_ARRAY tc[2]=DEF NOTICE: STRING_TO_ARRAY tc[3]=GHI
To Goldilocks Database
STRING_TO_ARRAY 함수 역할 및 잘린 문자열을 배열변수에 담는 프로시져 입니다.
CREATE OR REPLACE FUNCTION STRING_TO_ARRAY_TEST RETURN integer IS i Integer; ret Integer; ta Varchar(4000); TYPE rec1 IS TABLE OF Varchar(4000) INDEX BY Integer; tc rec1; BEGIN i := 1; ta := 'ABC;DEF;GHI'; LOOP ret := INSTR( ta, ';' ); tc(i) := SUBSTR(ta, 1, INSTR('ABC;DEF;GHI', ';') - 1); ta := SUBSTR(ta, INSTR(ta, ';') + 1); DBMS_OUTPUT.PUT_LINE('NOTICE: STRING_TO_ARRAY tc[' || i || ']=' || tc(i)); i := i + 1; EXIT WHEN ret = 0; END LOOP; RETURN 1; END; /
호출하면 다음과 같은 결과를 얻게됩니다.
gSQL> CALL STRING_TO_ARRAY_TEST() INTO :V1; NOTICE: STRING_TO_ARRAY tc[1]=ABC NOTICE: STRING_TO_ARRAY tc[2]=DEF NOTICE: STRING_TO_ARRAY tc[3]=GHI
To Oracle Database
STRING_TO_ARRAY 함수 역할 및 잘린 문자열을 배열변수에 담는 프로시져 입니다.
CREATE OR REPLACE FUNCTION STRING_TO_ARRAY_TEST RETURN integer IS i Integer; ret Integer; ta Varchar(4000); TYPE rec1 IS TABLE OF Varchar(4000) INDEX BY PLS_INTEGER; tc rec1; BEGIN i := 1; ta := 'ABC;DEF;GHI'; LOOP ret := INSTR( ta, ';' ); tc(i) := SUBSTR(ta, 1, INSTR('ABC;DEF;GHI', ';') - 1); ta := SUBSTR(ta, INSTR(ta, ';') + 1); DBMS_OUTPUT.PUT_LINE('NOTICE: STRING_TO_ARRAY tc[' || i || ']=' || tc(i)); i := i + 1; EXIT WHEN ret = 0; END LOOP; RETURN 1; END; /
호출하면 다음과 같은 결과를 얻게됩니다.
SQL> CALL STRING_TO_ARRAY_TEST() INTO :V1; NOTICE: STRING_TO_ARRAY tc[1]=ABC NOTICE: STRING_TO_ARRAY tc[2]=DEF NOTICE: STRING_TO_ARRAY tc[3]=GHI
'Database > PostgreSQL' 카테고리의 다른 글
[PostgreSQL] PostgreSQL 사용자 계정 추가와 롤 부여하는 방법 (0) | 2021.03.14 |
---|---|
[PostgreSQL] PostgreSQL 데이터베이스 생성 (0) | 2021.03.14 |
[PostgreSQL] PostgreSQL 다운로드 및 설치하기 (0) | 2021.03.14 |
[PostgreSQL] PostgreSQL 소개 (0) | 2021.03.14 |
[PostgreSQL] 테이블 목록 조회하기 (0) | 2018.07.13 |