SPLIT/SPLIT_BY_STRING
説明
SPLIT_BY_STRING関数は、指定された区切り文字列に基づいて入力文字列を文字列の配列に分割します。この関数は複数文字の区切り文字をサポートし、空文字列の処理において他のデータベースの類似関数とは異なる場合があります。
構文
SPLIT_BY_STRING(<str>, <separator>)
パラメータ
| パラメータ | 説明 |
|---|---|
<str> | 分割される元の文字列。型: VARCHAR |
<separator> | 分割に使用される区切り文字列。型: VARCHAR |
戻り値
ARRAY
分割ルール:
- strに含まれるseparatorの各出現箇所で分割
- 連続するseparatorは空文字列要素を生成
- 文字列の開始または終了にあるseparatorは空文字列要素を生成
特殊なケース:
- いずれかのパラメータがNULLの場合、NULLを返す
- strが空文字列の場合、一つの空文字列を持つ配列を返す [""]
- separatorが空文字列の場合、strは文字単位で分割される(各文字が配列要素になる)
- separatorがstrに存在しない場合、元の文字列を含む配列を返す
- strがseparatorのみを含む場合、separator数に基づく対応する数の空文字列を返す
例
- 基本的な文字列分割
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