카테고리:

문자열 및 이진 함수 (일반) , 테이블 함수

STRTOK_SPLIT_TO_TABLE

주어진 구분 기호 세트로 문자열을 토큰화하고 결과를 행으로 평면화합니다.

참고 항목:

STRTOK, STRTOK_TO_ARRAY

구문

STRTOK_SPLIT_TO_TABLE(<string> [,<delimiter_list>])
Copy

인자

필수:

string

토큰화할 텍스트입니다.

선택 사항:

delimiter_list

구분 기호 세트입니다. 선택 사항입니다. 기본값은 단일 공백 문자입니다.

반환

이는 테이블을 반환합니다.

반환된 행은 고정된 열 세트로 구성됩니다.

+-----+-------+-------+
| SEQ | INDEX | VALUE |
|-----+-------+-------|
Copy
SEQ

입력 레코드와 연결된 고유한 시퀀스 번호입니다. 시퀀스는 갭이 없거나 특정 방식으로 정렬된다고 보장되지 않습니다.

INDEX

요소의 인덱스입니다. 1부터 시작합니다.

VALUE

평면화된 배열의 요소 값입니다.

참고

이 함수의 데이터 소스로서 사용된 원본(상관) 테이블의 열에도 액세스할 수 있습니다. 원본 테이블의 단일 행으로 인해 평면화 뷰에 여러 행이 생성된 경우, 이 입력 행의 값은 STRTOK_SPLIT_TO_TABLE에 의해 생성된 행 수와 일치하도록 복제됩니다.

다음은 상수 입력에 대한 간단한 예입니다.

SELECT table1.value 
    FROM table(strtok_split_to_table('a.b', '.')) AS table1
    ORDER BY table1.value;
+-------+
| VALUE |
|-------|
| a     |
| b     |
+-------+
Copy

다음 두 가지 예에서는 아래에 만들어진 테이블과 데이터를 사용합니다.

CREATE OR REPLACE TABLE splittable (v VARCHAR);
INSERT INTO splittable (v) VALUES ('a b'), ('cde'), ('f|g'), ('');
Copy

이 예는 함수를 상관 테이블로 사용하는 방법을 보여줍니다.

SELECT * 
    FROM splittable, LATERAL STRTOK_SPLIT_TO_TABLE(splittable.v, ' ')
    ORDER BY SEQ, INDEX;
+-----+-----+-------+-------+
| V   | SEQ | INDEX | VALUE |
|-----+-----+-------+-------|
| a b |   1 |     1 | a     |
| a b |   1 |     2 | b     |
| cde |   2 |     1 | cde   |
| f|g |   3 |     1 | f|g   |
+-----+-----+-------+-------+
Copy

이 예는 여러 구분 기호를 지정한다는 점을 제외하고는 이전 예와 동일합니다.

SELECT * 
    FROM splittable, LATERAL STRTOK_SPLIT_TO_TABLE(splittable.v, ' |')
    ORDER BY SEQ, INDEX;
+-----+-----+-------+-------+
| V   | SEQ | INDEX | VALUE |
|-----+-----+-------+-------|
| a b |   1 |     1 | a     |
| a b |   1 |     2 | b     |
| cde |   2 |     1 | cde   |
| f|g |   3 |     1 | f     |
| f|g |   3 |     2 | g     |
+-----+-----+-------+-------+
Copy