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