카테고리:

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

SPLIT

주어진 구분 기호로 주어진 문자열을 분할하고 결과를 문자열 배열로 반환합니다.

소스 문자열에 연속적인 분할 문자열이 있거나 소스 문자열의 시작 또는 끝에 분할 문자열이 있으면 출력에 빈 문자열이 생성됩니다. 빈 구분 기호 문자열은 소스 문자열만 포함하는 배열을 생성합니다. 매개 변수 중 하나가 NULL인 경우, NULL이 반환됩니다.

결과는 반정형 데이터(예: FLATTENARRAY_SIZE)에서 작동하는 함수 및 구문과 함께 사용할 수 있습니다.

참고 항목

SPLIT_PART

구문

SPLIT(<string>, <separator>)
Copy

인자

string

부분으로 분할할 텍스트입니다.

separator

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

반환

반환된 값의 데이터 타입은 ARRAY입니다.

데이터 정렬 세부 정보

이 함수는 다음 데이터 정렬 사양을 지원하지 않습니다.

  • lower.

  • upper.

  • pi (구두점 구분 안 함).

  • cs-ai (대/소문자 구분, 악센트 구분 안 함).

출력 배열의 값은 데이터 정렬 사양을 포함하지 않으므로 추가 데이터 정렬 작업을 지원하지 않습니다.

localhost IP 주소 127.0.0.1 을 네 부분으로 구성된 배열로 분할합니다.

SELECT SPLIT('127.0.0.1', '.');

+-------------------------+
| SPLIT('127.0.0.1', '.') |
|-------------------------|
| [                       |
|   "127",                |
|   "0",                  |
|   "0",                  |
|   "1"                   |
| ]                       |
+-------------------------+
Copy

구분 기호로서 세로선을 포함하는 문자열을 분할합니다(출력은 빈 문자열을 포함함).

SELECT SPLIT('|a||', '|');

+--------------------+
| SPLIT('|A||', '|') |
|--------------------|
| [                  |
|   "",              |
|   "a",             |
|   "",              |
|   ""               |
| ]                  |
+--------------------+
Copy

LATERAL FLATTEN 구문을 사용하여 단일 문자열에서 여러 레코드를 생성하기 위해 SPLIT의 결과를 사용합니다. FLATTEN 은 VARIANT, OBJECT 또는 ARRAY 열을 사용하고 래터럴 뷰(즉, FROM 절에서 선행하는 다른 테이블을 참조하는 상관 관계를 포함하는 인라인 뷰)를 생성하는 테이블 함수입니다.

SELECT * FROM persons;

------+---------------------+
 NAME |      CHILDREN       |
------+---------------------+
 Mark | Marky,Mark Jr,Maria |
 John | Johnny,Jane         |
------+---------------------+

SELECT name, C.value::string AS childName
FROM persons,
     LATERAL FLATTEN(input=>split(children, ',')) C;

------+-----------+
 NAME | CHILDNAME |
------+-----------+
 John | Johnny    |
 John | Jane      |
 Mark | Marky     |
 Mark | Mark Jr   |
 Mark | Maria     |
------+-----------+
Copy