최종 수정: 에
SPLIT/SPLIT_BY_STRING
설명
SPLIT_BY_STRING 함수는 지정된 구분자 문자열을 기준으로 입력 문자열을 문자열 배열로 분할합니다. 이 함수는 여러 문자로 구성된 구분자를 지원하며, 빈 문자열을 처리하는 방식이 다른 데이터베이스의 유사한 함수와 다를 수 있습니다.
구문
SPLIT_BY_STRING(<str>, <separator>)
매개변수
| 매개변수 | 설명 |
|---|---|
<str> | 분할할 원본 문자열입니다. 타입: VARCHAR |
<separator> | 분할에 사용할 구분자 문자열입니다. 타입: VARCHAR |
반환값
구분자로 분할된 문자열이 담긴 ARRAY
분할 규칙:
- str에서 separator가 나타날 때마다 분할합니다.
- 연속된 구분자는 빈 문자열 요소를 생성합니다.
- 문자열의 시작이나 끝에 있는 구분자는 빈 문자열 요소를 생성합니다.
특수한 경우:
- 매개변수 중 하나라도 NULL이면 NULL을 반환합니다.
- str이 빈 문자열이면 빈 배열
[]를 반환합니다. - separator가 빈 문자열이면 str을 문자 단위로 분할합니다(각 문자가 배열 요소가 됩니다).
- separator가 str에 없으면 원본 문자열을 포함하는 배열을 반환합니다.
- str이 구분자로만 구성되어 있으면 구분자 개수에 따라 그에 맞는 수의 빈 문자열을 반환합니다.
예제
- 기본 문자열 분할
SELECT SPLIT_BY_STRING('hello', 'l');
+-------------------------------+
| SPLIT_BY_STRING('hello', 'l') |
+-------------------------------+
| ["he", "", "o"] |
+-------------------------------+
- 빈 구분자(문자 단위로 분할)
SELECT SPLIT_BY_STRING('hello', '');
+------------------------------+
| SPLIT_BY_STRING('hello', '') |
+------------------------------+
| ["h", "e", "l", "l", "o"] |
+------------------------------+
- 여러 문자로 구성된 구분자
SELECT SPLIT_BY_STRING('apple::banana::cherry', '::');
+------------------------------------------------+
| SPLIT_BY_STRING('apple::banana::cherry', '::') |
+------------------------------------------------+
| ["apple", "banana", "cherry"] |
+------------------------------------------------+
- NULL 값 처리
SELECT SPLIT_BY_STRING(NULL, ','), SPLIT_BY_STRING('hello', NULL);
+-----------------------------+----------------------------------+
| SPLIT_BY_STRING(NULL, ',') | SPLIT_BY_STRING('hello', NULL) |
+-----------------------------+----------------------------------+
| NULL | NULL |
+-----------------------------+----------------------------------+
- 빈 문자열 처리
SELECT SPLIT_BY_STRING('', ','), SPLIT_BY_STRING('hello', 'xyz');
+---------------------------+----------------------------------+
| SPLIT_BY_STRING('', ',') | SPLIT_BY_STRING('hello', 'xyz') |
+---------------------------+----------------------------------+
| [] | ["hello"] |
+---------------------------+----------------------------------+
- 연속된 구분자
SELECT SPLIT_BY_STRING('a,,b,c', ',');
+-------------------------------+
| SPLIT_BY_STRING('a,,b,c', ',') |
+-------------------------------+
| ["a", "", "b", "c"] |
+-------------------------------+
- 문자열의 시작과 끝에 있는 구분자
SELECT SPLIT_BY_STRING(',a,b,', ',');
+------------------------------+
| SPLIT_BY_STRING(',a,b,', ',') |
+------------------------------+
| ["", "a", "b", ""] |
+------------------------------+
- 구분자만 포함된 문자열
SELECT SPLIT_BY_STRING('|||', '|');
+----------------------------+
| SPLIT_BY_STRING('|||', '|') |
+----------------------------+
| ["", "", "", ""] |
+----------------------------+
- UTF-8 문자 분할
SELECT SPLIT_BY_STRING('ṭṛì ḍḍumai ṭṛì', ' ');
+--------------------------------------+
| SPLIT_BY_STRING('ṭṛì ḍḍumai ṭṛì', ' ') |
+--------------------------------------+
| ["ṭṛì", "ḍḍumai", "ṭṛì"] |
+--------------------------------------+
- 존재하지 않는 구분자
SELECT SPLIT_BY_STRING('hello world', 'xyz');
+--------------------------------------+
| SPLIT_BY_STRING('hello world', 'xyz') |
+--------------------------------------+
| ["hello world"] |
+--------------------------------------+
키워드
SPLIT_BY_STRING, SPLIT