ARRAY_JOIN
array_join
説明
配列の要素を文字列に結合します。この関数は配列内のすべての要素を文字列に変換し、指定された区切り文字で連結します。
構文
array_join(ARRAY<T> arr, STRING separator [, STRING null_replacement])
パラメータ
arr:ARRAY型、結合対象の配列 separator:STRING型、必須パラメータ、配列要素を区切るために使用される区切り文字null_replacement:STRING型、オプションパラメータ、配列内のnull値を置換するために使用される文字列。このパラメータが提供されない場合、null値はスキップされます
Tでサポートされる型:
- 数値型: TINYINT, SMALLINT, INT, BIGINT, LARGEINT, FLOAT, DOUBLE, DECIMAL
- 文字列型: CHAR, VARCHAR, STRING
- 日付・時刻型: DATE, DATETIME, DATEV2, DATETIMEV2
- Boolean型: BOOLEAN
- IP型: IPV4, IPV6
戻り値
戻り値の型: STRING
戻り値の意味:
- 配列のすべての要素を区切り文字で結合した文字列を返します
- NULL: 入力配列がNULLの場合
使用上の注意:
- この関数は配列内の各要素を文字列に変換し、指定された区切り文字で結合します
- 配列要素内のnull値について:
null_replacementパラメータが提供される場合、null要素はその文字列に置換されますnull_replacementパラメータが提供されない場合、null要素はスキップされます
- 空の配列は空文字列を返します
クエリ例:
区切り文字を使用して配列を結合:
SELECT array_join([1, 2, 3, 4, 5], ',');
+--------------------------------------+
| array_join([1, 2, 3, 4, 5], ',') |
+--------------------------------------+
| 1,2,3,4,5 |
+--------------------------------------+
文字列配列をスペース区切りで結合する:
SELECT array_join(['hello', 'world', 'doris'], ' ');
+--------------------------------------------------+
| array_join(['hello', 'world', 'doris'], ' ') |
+--------------------------------------------------+
| hello world doris |
+--------------------------------------------------+
null値を含む配列を結合する(null値はスキップされます):
SELECT array_join([1, null, 3, null, 5], '-');
+--------------------------------------------+
| array_join([1, null, 3, null, 5], '-') |
+--------------------------------------------+
| 1-3-5 |
+--------------------------------------------+
null値をnull_replacementパラメータを使用して置換します:
SELECT array_join([1, null, 3, null, 5], '-', 'NULL');
+--------------------------------------------------+
| array_join([1, null, 3, null, 5], '-', 'NULL') |
+--------------------------------------------------+
| 1-NULL-3-NULL-5 |
+--------------------------------------------------+
float配列を結合する:
SELECT array_join([1.1, 2.2, 3.3], ' | ');
+------------------------------------------+
| array_join([1.1, 2.2, 3.3], ' | ') |
+------------------------------------------+
| 1.1 | 2.2 | 3.3 |
+------------------------------------------+
日付配列を結合する:
SELECT array_join(CAST(['2023-01-01', '2023-06-15', '2023-12-31'] AS ARRAY<DATETIME>), ' to ');
+-----------------------------------------------------------------------------------------+
| array_join(CAST(['2023-01-01', '2023-06-15', '2023-12-31'] AS ARRAY<DATETIME>), ' to ') |
+-----------------------------------------------------------------------------------------+
| 2023-01-01 00:00:00 to 2023-06-15 00:00:00 to 2023-12-31 00:00:00 |
+-----------------------------------------------------------------------------------------+
IP アドレス配列の結合:
SELECT array_join(CAST(['192.168.1.1', '192.168.1.2', '192.168.1.3'] AS ARRAY<IPV4>), ' -> ');
+----------------------------------------------------------------------------------+
| array_join(CAST(['192.168.1.1', '192.168.1.2', '192.168.1.3'] AS ARRAY<IPV4>), ' -> ') |
+----------------------------------------------------------------------------------+
| 192.168.1.1 -> 192.168.1.2 -> 192.168.1.3 |
+----------------------------------------------------------------------------------+
空の配列は空文字列を返します:
SELECT array_join([], ',');
+----------------------+
| array_join([], ',') |
+----------------------+
| |
+----------------------+
NULL配列はNULLを返します:
SELECT array_join(NULL, ',');
+----------------------+
| array_join(NULL, ',') |
+----------------------+
| NULL |
+----------------------+
複合型を渡す際のエラー:
SELECT array_join([{'name':'Alice','age':20}, {'name':'Bob','age':30}], '; ');
ERROR 1105 (HY000): errCode = 2, detailMessage = can not cast from origin type ARRAY<MAP<TEXT,TEXT>> to target type=ARRAY<VARCHAR(65533)>
パラメータ数が間違っている場合のエラー:
SELECT array_join([1,2,3], ',', 'extra', 'too_many');
ERROR 1105 (HY000): errCode = 2, detailMessage = Can not found function 'array_join' which has 4 arity. Candidate functions are: [array_join(Expression, Expression, Expression), array_join(Expression, Expression)]
非配列型を渡した際のエラー:
SELECT array_join('not_an_array', ',');
ERROR 1105 (HY000): errCode = 2, detailMessage = Can not find the compatibility function signature: array_join(VARCHAR(12), VARCHAR(1))
キーワード
ARRAY, JOIN, ARRAY_JOIN