본문으로 건너뛰기
최종 수정: 에

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이 구분자로만 구성되어 있으면 구분자 개수에 따라 그에 맞는 수의 빈 문자열을 반환합니다.

예제​

  1. 기본 문자열 분할
SELECT SPLIT_BY_STRING('hello', 'l');
+-------------------------------+
| SPLIT_BY_STRING('hello', 'l') |
+-------------------------------+
| ["he", "", "o"] |
+-------------------------------+
  1. 빈 구분자(문자 단위로 분할)
SELECT SPLIT_BY_STRING('hello', '');
+------------------------------+
| SPLIT_BY_STRING('hello', '') |
+------------------------------+
| ["h", "e", "l", "l", "o"] |
+------------------------------+
  1. 여러 문자로 구성된 구분자
SELECT SPLIT_BY_STRING('apple::banana::cherry', '::');
+------------------------------------------------+
| SPLIT_BY_STRING('apple::banana::cherry', '::') |
+------------------------------------------------+
| ["apple", "banana", "cherry"] |
+------------------------------------------------+
  1. NULL 값 처리
SELECT SPLIT_BY_STRING(NULL, ','), SPLIT_BY_STRING('hello', NULL);
+-----------------------------+----------------------------------+
| SPLIT_BY_STRING(NULL, ',') | SPLIT_BY_STRING('hello', NULL) |
+-----------------------------+----------------------------------+
| NULL | NULL |
+-----------------------------+----------------------------------+
  1. 빈 문자열 처리
SELECT SPLIT_BY_STRING('', ','), SPLIT_BY_STRING('hello', 'xyz');
+---------------------------+----------------------------------+
| SPLIT_BY_STRING('', ',') | SPLIT_BY_STRING('hello', 'xyz') |
+---------------------------+----------------------------------+
| [] | ["hello"] |
+---------------------------+----------------------------------+
  1. 연속된 구분자
SELECT SPLIT_BY_STRING('a,,b,c', ',');
+-------------------------------+
| SPLIT_BY_STRING('a,,b,c', ',') |
+-------------------------------+
| ["a", "", "b", "c"] |
+-------------------------------+
  1. 문자열의 시작과 끝에 있는 구분자
SELECT SPLIT_BY_STRING(',a,b,', ',');
+------------------------------+
| SPLIT_BY_STRING(',a,b,', ',') |
+------------------------------+
| ["", "a", "b", ""] |
+------------------------------+
  1. 구분자만 포함된 문자열
SELECT SPLIT_BY_STRING('|||', '|');
+----------------------------+
| SPLIT_BY_STRING('|||', '|') |
+----------------------------+
| ["", "", "", ""] |
+----------------------------+
  1. UTF-8 문자 분할
SELECT SPLIT_BY_STRING('ṭṛì ḍḍumai ṭṛì', ' ');
+--------------------------------------+
| SPLIT_BY_STRING('ṭṛì ḍḍumai ṭṛì', ' ') |
+--------------------------------------+
| ["ṭṛì", "ḍḍumai", "ṭṛì"] |
+--------------------------------------+
  1. 존재하지 않는 구분자
SELECT SPLIT_BY_STRING('hello world', 'xyz');
+--------------------------------------+
| SPLIT_BY_STRING('hello world', 'xyz') |
+--------------------------------------+
| ["hello world"] |
+--------------------------------------+

키워드​

SPLIT_BY_STRING, SPLIT