カテゴリ:

変換関数半構造化データ関数と構造化データ関数 (配列/オブジェクト)

TO_ARRAY

入力式を ARRAY の値に変換します。

構文

TO_ARRAY( <expr> )
Copy

引数

expr

任意のデータ型の式です。

戻り値

この関数は ARRAY 型または NULL の値を返します。

  • 入力が ARRAY、または ARRAY の値を含む VARIANT の場合、値は変更されずに返されます。

  • expr が NULL または JSON null の値の場合、関数は NULL を返します。

  • それ以外の値の場合、返される値はこの値を含む単一要素の配列となります。

使用上の注意

複数の要素を含む配列を作成するには、 ARRAY_CONSTRUCT または STRTOK_TO_ARRAY を使用します。

テーブルを作成し、 TO_ARRAY 関数を呼び出してデータを挿入します。

CREATE OR REPLACE TABLE array_demo_2 (
  ID INTEGER,
  array1 ARRAY,
  array2 ARRAY);

INSERT INTO array_demo_2 (ID, array1, array2)
  SELECT 1, TO_ARRAY(1), TO_ARRAY(3);

SELECT * FROM array_demo_2;
Copy
+----+--------+--------+
| ID | ARRAY1 | ARRAY2 |
|----+--------+--------|
|  1 | [      | [      |
|    |   1    |   3    |
|    | ]      | ]      |
+----+--------+--------+

挿入時に作成された単一要素配列と、 ARRAY_CAT を呼び出して2つの配列を連結した結果を示すクエリを実行します。

SELECT array1, array2, ARRAY_CAT(array1, array2)
  FROM array_demo_2;
Copy
+--------+--------+---------------------------+
| ARRAY1 | ARRAY2 | ARRAY_CAT(ARRAY1, ARRAY2) |
|--------+--------+---------------------------|
| [      | [      | [                         |
|   1    |   3    |   1,                      |
| ]      | ]      |   3                       |
|        |        | ]                         |
+--------+--------+---------------------------+

この例では、入力式に区切り文字(コンマなど)が含まれている場合でも、 TO_ARRAY は文字列式を単一の要素を持つ配列に変換することを示しています。

SELECT TO_ARRAY('snowman,snowball,snowcone') AS to_array_result;
Copy
+-------------------------------+
| TO_ARRAY_RESULT               |
|-------------------------------|
| [                             |
|   "snowman,snowball,snowcone" |
| ]                             |
+-------------------------------+

同じ文字列入力式を複数の要素を持つ配列に変換するために、 STRTOK_TO_ARRAY 関数を使用できます。

SELECT STRTOK_TO_ARRAY('snowman,snowball,snowcone', ',') AS strtok_to_array_result;
Copy
+------------------------+
| STRTOK_TO_ARRAY_RESULT |
|------------------------|
| [                      |
|   "snowman",           |
|   "snowball",          |
|   "snowcone"           |
| ]                      |
+------------------------+