に最終更新
SPLIT_PART
説明
SPLIT_PART 関数は、指定した区切り文字列で文字列を複数の部分に分割し、そのうちの一つを返します。
構文
SPLIT_PART ( <str>, <separator>, <part_index> )
パラメータ
| パラメータ | 説明 |
|---|---|
<str> | 分割する文字列 |
<separator> | 分割に使用する文字列 |
<part_index> | 返す部分のインデックス。1 から始まります |
戻り値
区切り文字列で分割した文字列のうち、指定した部分を返します。特殊なケースは次のとおりです。
- パラメータのいずれかが NULL の場合、NULL を返します。
<part_index>が 0 の場合、NULL を返します。<part_index>が範囲外の場合、NULL を返します。
例
- 文字列の基本的な分割
SELECT SPLIT_PART('hello world', ' ', 1);
+----------------------------------+
| SPLIT_PART('hello world', ' ', 1) |
+----------------------------------+
| hello |
+----------------------------------+
- 二番目の部分を取得
SELECT SPLIT_PART('apple,banana,cherry', ',', 2);
+-------------------------------------------+
| SPLIT_PART('apple,banana,cherry', ',', 2) |
+-------------------------------------------+
| banana |
+-------------------------------------------+
- インデックスが 0 の場合(NULL を返す)
SELECT SPLIT_PART('apple,banana,cherry', ',', 0);
+-------------------------------------------+
| SPLIT_PART('apple,banana,cherry', ',', 0) |
+-------------------------------------------+
| NULL |
+-------------------------------------------+
- 負のインデックス(末尾から数える)
SELECT SPLIT_PART('apple,banana,cherry', ',', -1), SPLIT_PART('apple,banana,cherry', ',', -2);
+--------------------------------------------+--------------------------------------------+
| SPLIT_PART('apple,banana,cherry', ',', -1) | SPLIT_PART('apple,banana,cherry', ',', -2) |
+--------------------------------------------+--------------------------------------------+
| cherry | banana |
+--------------------------------------------+--------------------------------------------+
- インデックスが範囲外の場合
SELECT SPLIT_PART('apple,banana', ',', 5), SPLIT_PART('apple,banana', ',', -5);
+------------------------------------+-------------------------------------+
| SPLIT_PART('apple,banana', ',', 5) | SPLIT_PART('apple,banana', ',', -5) |
+------------------------------------+-------------------------------------+
| NULL | NULL |
+------------------------------------+-------------------------------------+
- NULL 値の処理
SELECT SPLIT_PART(NULL, ',', 1), SPLIT_PART('test', NULL, 1), SPLIT_PART('test', ',', NULL);
+---------------------------+-----------------------------+-------------------------------+
| SPLIT_PART(NULL, ',', 1) | SPLIT_PART('test', NULL, 1) | SPLIT_PART('test', ',', NULL) |
+---------------------------+-----------------------------+-------------------------------+
| NULL | NULL | NULL |
+---------------------------+-----------------------------+-------------------------------+
- 空文字列の処理
SELECT SPLIT_PART('', ',', 1), SPLIT_PART('test', '', 2);
+------------------------+---------------------------+
| SPLIT_PART('', ',', 1) | SPLIT_PART('test', '', 2) |
+------------------------+---------------------------+
| NULL | |
+------------------------+---------------------------+
- 区切り文字列が存在しない場合
SELECT SPLIT_PART('hello world', '|', 1), SPLIT_PART('hello world', '|', 2);
+-----------------------------------+-----------------------------------+
| SPLIT_PART('hello world', '|', 1) | SPLIT_PART('hello world', '|', 2) |
+-----------------------------------+-----------------------------------+
| NULL | NULL |
+-----------------------------------+-----------------------------------+
- 連続する区切り文字列
SELECT SPLIT_PART('a,,c', ',', 1), SPLIT_PART('a,,c', ',', 2), SPLIT_PART('a,,c', ',', 3);
+----------------------------+----------------------------+----------------------------+
| SPLIT_PART('a,,c', ',', 1) | SPLIT_PART('a,,c', ',', 2) | SPLIT_PART('a,,c', ',', 3) |
+----------------------------+----------------------------+----------------------------+
| a | | c |
+----------------------------+----------------------------+----------------------------+
- UTF-8 文字の処理
SELECT SPLIT_PART('ṭṛì ḍḍumai ṭṛì', ' ', 2);
+--------------------------------------+
| SPLIT_PART('ṭṛì ḍḍumai ṭṛì', ' ', 2) |
+--------------------------------------+
| ḍḍumai |
+--------------------------------------+
キーワード
SPLIT_PART, SPLIT