카테고리:

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

SPLIT_TO_TABLE

이 테이블 함수는 (지정된 구분 기호를 기준으로) 문자열을 분할하고 결과를 행으로 평면화합니다.

참고 항목:

SPLIT

구문

SPLIT_TO_TABLE(<string>, <delimiter>)
Copy

인자

string

분할할 텍스트입니다.

delimiter

문자열을 분할할 텍스트입니다.

반환

반환된 값은 테이블입니다.

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

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

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

INDEX:

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

VALUE:

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

참고

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

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

SELECT table1.value 
    FROM table(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.c'), ('d'), ('');
Copy

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

SELECT * 
    FROM splittable, LATERAL SPLIT_TO_TABLE(splittable.v, '.')
    ORDER BY SEQ, INDEX;
+-------+-----+-------+-------+
| V     | SEQ | INDEX | VALUE |
|-------+-----+-------+-------|
| a.b.c |   1 |     1 | a     |
| a.b.c |   1 |     2 | b     |
| a.b.c |   1 |     3 | c     |
| d     |   2 |     1 | d     |
|       |   3 |     1 |       |
+-------+-----+-------+-------+
Copy