すべてのプロダクト
Search
ドキュメントセンター

Hologres:Array functions

最終更新日:Feb 15, 2026

Hologres は PostgreSQL と互換性があり、標準の PostgreSQL 構文をサポートしています。このトピックでは、Hologres がサポートする配列 (ARRAY) 関数とその利用シーンについて説明します。

関数

機能

ARRAY_AGG

列内の複数行のデータを集約して配列にします。

ARRAY_APPEND

配列の末尾に要素を追加します。

ARRAY_CAT

2 つの配列を連結します。

ARRAY_CONTAINS

配列に指定された値が含まれているかどうかをチェックします。

ARRAY_DIMS

テキスト配列のディメンション数を取得します。

ARRAY_DISTINCT

配列から重複した要素を削除します。

ARRAY_EXCEPT

指定された配列要素を含まない配列を取得します。

ARRAY_LENGTH

指定された配列ディメンションの長さを返します。

ARRAY_LOWER

指定された配列ディメンションの下限を返します。

ARRAY_MAX

配列内のすべての要素の最大値を返します。このプロセスでは NULL 値はスキップされます。

ARRAY_MIN

配列内のすべての要素の最小値を返します。

ARRAY_NDIMS

配列のディメンション数を返します。

ARRAY_REMOVE

1次元配列から指定された値と等しいすべての要素を削除します。

ARRAY_POSITIONS

1次元配列内の指定された要素の添字を返します。

ARRAY_PREPEND

配列の先頭に要素を追加します。

ARRAY_SORT

配列の要素をソートします。

ARRAY_TO_STRING

指定された区切り文字を使用して配列要素を連結します。NULL 値を表す文字列を指定できます。

ARRAY_UNION

2 つの配列を新しい配列にマージし、重複した要素を削除します。

ARRAY_UPPER

指定された配列ディメンションの上限を返します。

REGEXP_MATCH

文字列を正規表現と照合し、一致した部分を結果配列で返します。

REGEXP_SPLIT_TO_ARRAY

正規表現で文字列を分割し、結果を配列に変換します。

UNNEST

配列の各要素を個別の行に展開します。

制限事項

array_maxarray_minarray_containsarray_exceptarray_distinct、および array_union 関数は定数クエリをサポートしていません。例:SELECT array_max(ARRAY[-2, NULL, -3, -12, -7]);

配列関数

ARRAY_TO_STRING

  • 説明:指定された区切り文字を使用して配列要素を連結します。配列内の NULL 値を表す文字列を指定できます。

    array_to_string(anyarray, text[, text])
  • パラメーターの説明

    • anyarray:連結したい要素を含む配列。

    • text (2 番目のパラメーター):区切り文字として使用する文字列。

    • text (3 番目のパラメーター、オプション):NULL 値を表すために使用される文字列。このパラメーターが指定されていない場合、NULL 値は無視されます。

  • 戻り値の説明

    TEXT 型の値を返します。

  • -- 結果は 1,2,3 です
    SELECT array_to_string(ARRAY[1, 2, 3], ',')

ARRAY_AGG

  • 説明:列内の複数行のデータを集約して配列にします。

    • 方法 1:

      array_agg(anyelement)

      パラメーターの説明

      • anyelement:集約する列または式。

      注意事項:

      • DECIMAL、DATE、TIMESTAMP、および TIMESTAMPTZ データ型は、Hologres V1.3 以降でのみサポートされています。

        説明

        ご利用の Hologres インスタンスのバージョンが古い場合は、インスタンスをアップグレードするか、Hologres DingTalk グループに参加してフィードバックを提供してください。詳細については、「インスタンスのアップグレード」または「オンラインサポートの利用方法」をご参照ください。

      • JSON、JSONB、TIMETZ、INTERVAL、INET、OID、UUID、および ARRAY 型はサポートされていません。

    • 方法 2:

      array_agg (expression[ order_by_clause ] ) [ FILTER ( WHERE filter_clause ) ]

      パラメーターの説明

      • expression:集約する式。

      • order_by_clause (オプション):集約のソート順を指定する ORDER BY 句。

      • filter_clause (オプション):FILTER 句のフィルター条件。条件を満たす行のみが集約に含まれます。

      注意事項:

      FILTER 句は Hologres V1.3 以降でのみサポートされています。

      説明

      ご利用の Hologres インスタンスのバージョンが古い場合は、インスタンスをアップグレードするか、Hologres DingTalk グループに参加してフィードバックを提供してください。詳細については、「インスタンスのアップグレード」または「オンラインサポートの利用方法」をご参照ください。

  • 戻り値の説明

    ARRAY 型の値を返します。

    • 例 1 (array_agg(anyelement))

      CREATE TABLE test_array_agg_int (
          c1 int
      );
      
      INSERT INTO test_array_agg_int
          VALUES (1), (2);
      
      SELECT
          array_agg (c1)
      FROM
          test_array_agg_int;

      次の結果が返されます。

       array_agg
      -----------
       {2,1}
      (1 row)
    • 例 2 (FILTER):

      CREATE TABLE test_array_agg_int (
          c1 int
      );
      
      INSERT INTO test_array_agg_int
          VALUES (1), (2);
      
      SELECT
          array_agg (c1) filter (where c1 >1)
      FROM
          test_array_agg_int;

      次の結果が返されます。

       array_agg
      -----------
       {2}
      (1 row)

ARRAY_APPEND

  • 説明:配列の末尾に要素を追加します。

    array_append(anyarray, anyelement)
  • パラメーターの説明

    • anyarray:ソース配列。

    • anyelement:配列の末尾に追加する要素。

  • 戻り値の説明

    ARRAY 型の値を返します。

  • -- 結果は {1,2,3} です
    SELECT array_append(ARRAY[1,2], 3);

ARRAY_CAT

  • 説明:2 つの配列を連結します。

    array_cat(anyarray,anyarray)
  • パラメーターの説明

    • anyarray (1 番目のパラメーター):最初の配列。

    • anyarray (2 番目のパラメーター):2 番目の配列。

  • 戻り値の説明

    ARRAY 型の値を返します。

  • -- 結果は {1,2,3,4,5} です
    SELECT array_cat(ARRAY[1,2,3], ARRAY[4,5]);

ARRAY_NDIMS

  • 説明:配列のディメンション数を返します。

    array_ndims(anyarray)
  • パラメーターの説明

    • anyarray:クエリ対象の配列。

  • 戻り値の説明

    INT 型の値を返します。

  • -- 結果は 2 です
    SELECT array_ndims(ARRAY[[1,2,3], [4,5,6]]);

ARRAY_DIMS

  • 説明:テキスト配列型のディメンション数を取得します。

    array_dims(anyarray)
  • パラメーターの説明

    • anyarray:クエリ対象の配列。

  • 戻り値の説明

    TEXT 型の値を返します。

  • -- 結果は [1:2][1:3] です
    SELECT array_dims(ARRAY[[1,2,3], [4,5,6]]);

ARRAY_LENGTH

  • 説明:指定された配列ディメンションの長さを返します。

    array_length(anyarray, int)
  • パラメーターの説明

    • anyarray:クエリ対象の配列。

    • int:長さを取得したいディメンション。ディメンションは 1 から番号が付けられます。

  • 戻り値の説明

    INT 型の値を返します。

  • -- 結果は 3 です
    SELECT array_length(ARRAY[1,2,3], 1);

ARRAY_LOWER

  • 説明:指定された配列ディメンションの下限を返します。

    array_lower(anyarray, int)	
  • パラメーターの説明

    • anyarray:クエリ対象の配列。

    • int:下限を取得したいディメンション。ディメンションは 1 から番号が付けられます。

  • 戻り値の説明

    INT 型の値を返します。

  • -- 結果は 0 です
    SELECT array_lower('[0:2]={1,2,3}'::int[], 1);

ARRAY_POSITIONS

  • 説明:1次元配列内の指定された要素の添字を返します。

    array_positions(anyarray, anyelement)
  • パラメーターの説明

    • anyarray:クエリ対象の1次元配列。

    • anyelement:添字を検索したい要素。

  • 戻り値の説明

    ARRAY 型の値を返します。

  • -- 結果は {1,2,4} です
    SELECT array_positions(ARRAY['A','A','B','A'], 'A');

ARRAY_PREPEND

  • 説明:配列の先頭に要素を追加します。

    array_prepend(anyelement, anyarray)
  • パラメーターの説明

    • anyelement:配列の先頭に追加する要素。

    • anyarray:ソース配列。

  • 戻り値の説明

    ARRAY 型の値を返します。

  • -- 結果は {1,2,3} です
    SELECT array_prepend(1, ARRAY[2,3]);

ARRAY_REMOVE

  • 説明:1次元配列から指定された値と等しいすべての要素を削除します。

    array_remove(anyarray, anyelement)
  • パラメーターの説明

    • anyarray:処理対象の1次元配列。

    • anyelement:配列から削除する値。この値と等しいすべての要素が削除されます。

  • 戻り値の説明

    ARRAY 型の値を返します。

  • -- 結果は {1,3} です
    SELECT array_remove(ARRAY[1,2,3,2], 2);

ARRAY_SORT

  • 説明:配列の要素をソートします。

    array_sort(anyarray)
  • パラメーターの説明

    • anyarray:ソートする配列。

  • 注意事項:

    • Hologres V1.1.46 以降では TEXT 配列をサポートしています。TEXT 配列はソートのために INT8 配列に変換され、ソートされた TEXT 配列が返されます。

    • Hologres V1.3.18 以降では INT4、INT8、FLOAT4、FLOAT8、および BOOLEAN 配列をサポートしています。TEXT 配列は辞書式順序でソートされます。

  • 戻り値の説明

    ARRAY 型の値を返します。

  • -- 結果は {1,1,2,3} です
    SELECT array_sort(ARRAY[1,3,2,1]);

ARRAY_UPPER

  • 説明:指定された配列ディメンションの上限を返します。

    array_upper(anyarray, int)
  • パラメーターの説明

    • anyarray:クエリ対象の配列。

    • int:上限を取得したいディメンション。ディメンションは 1 から番号が付けられます。

  • 戻り値の説明

    INT 型の値を返します。

  • -- 結果は 4 です
    SELECT array_upper(ARRAY[1,8,3,7], 1);

UNNEST

  • 説明:配列の各要素を個別の行に展開します。

    unnest(anyarray)
  • パラメーターの説明

    • anyarray:展開する配列。

  • 戻り値の説明

    TEXT 型の値を返します。

  • SELECT unnest(ARRAY[1,2]);

    次の結果が返されます。

    unnest
    ------
    1
    2
    (2 rows)

ARRAY_MAX

  • 説明:配列内のすべての要素の最大値を返します。計算中に NULL 値はスキップされます。

    array_max(array)

    パラメーターの説明

    • array:計算対象の配列。計算中に NULL 値はスキップされます。

    注意事項:

    この関数は Hologres V1.3.19 以降でのみサポートされています。

    説明

    ご利用の Hologres インスタンスのバージョンが古い場合は、インスタンスをアップグレードするか、Hologres DingTalk グループに参加してフィードバックを提供してください。詳細については、「インスタンスのアップグレード」または「オンラインサポートの利用方法」をご参照ください。

  • 戻り値の説明

    INT 型の値を返します。

  • CREATE TABLE test_array_max_int (
        c1 int[]
    );
    
    INSERT INTO test_array_max_int
        VALUES (NULL), (ARRAY[-2, NULL, -3, -12, -7]);
    
    SELECT
        c1,
        array_max (c1)
    FROM
        test_array_max_int;

    次の結果が返されます。

            c1        | array_max
    ------------------+-----------
     \N               |\N
     {-2,0,-3,-12,-7} |         0
    (2 rows)

ARRAY_MIN

  • 説明:配列内のすべての要素の最小値を返します。

    array_min(array)

    パラメーターの説明

    • array:計算対象の配列。

    注意事項:

    この関数は Hologres V1.3.19 以降でのみサポートされています。

    説明

    ご利用の Hologres インスタンスのバージョンが古い場合は、インスタンスをアップグレードするか、Hologres DingTalk グループに参加してフィードバックを提供してください。詳細については、「インスタンスのアップグレード」または「オンラインサポートの利用方法」をご参照ください。

  • 戻り値の説明

    INT 型の値を返します。

  • CREATE TABLE test_array_min_text (
        c1 text[]
    );
    
    INSERT INTO test_array_min_text
        VALUES (NULL), (ARRAY['hello', 'holo', 'blackhole', 'array']);
    
    SELECT
        c1,
        array_min (c1)
    FROM
        test_array_min_text;

    次の結果が返されます。

                  c1              | array_min
    ------------------------------+-----------
     \N                           |\N
     {hello,holo,blackhole,array} | array
    (2 rows)

ARRAY_CONTAINS

  • 説明:配列に指定された値が含まれているかどうかをチェックします。

    array_contains(array, target_value)

    パラメーターの説明

    • array:チェックする配列。

    • target_value:配列内でチェックするターゲット値。

    注意事項:

    この関数は Hologres V1.3.19 以降でのみサポートされています。

    説明

    ご利用の Hologres インスタンスのバージョンが古い場合は、インスタンスをアップグレードするか、Hologres DingTalk グループに参加してフィードバックを提供してください。詳細については、「インスタンスのアップグレード」または「オンラインサポートの利用方法」をご参照ください。

  • 戻り値の説明

    BOOLEAN 型の値を返します。配列に指定された値が含まれている場合、関数は true を返します。それ以外の場合は false を返します。

  • CREATE TABLE test_array_contains_text (
        c1 text[],
        c2 text
    );
    
    INSERT INTO test_array_contains_text
        VALUES (ARRAY[NULL, 'cs', 'holo', 'sql', 'a', NULL, ''], 'holo')
                    , (ARRAY['holo', 'array', 'FE', 'l', NULL, ''], 'function');
    
    SELECT
        c1,
        c2,
        array_contains (c1, c2)
    FROM
        test_array_contains_text;

    次の結果が返されます。

                c1            |    c2    | array_contains
    --------------------------+----------+----------------
     {holo,array,FE,l,"",""}  | function | f
     {"",cs,holo,sql,a,"",""} | holo     | t
    (2 rows)

ARRAY_EXCEPT

  • 説明:指定された配列要素を含まない配列を返します。

    array_except(array1, array2)

    パラメーターの説明

    • array1:ソース配列。

    • array2:array1 から除外する要素の配列。結果は、array1 には含まれるが array2 には含まれない要素の配列になります。

    注意事項:

    この関数は Hologres V1.3.19 以降でのみサポートされています。

    説明

    ご利用の Hologres インスタンスのバージョンが古い場合は、インスタンスをアップグレードするか、Hologres DingTalk グループに参加してフィードバックを提供してください。詳細については、「インスタンスのアップグレード」または「オンラインサポートの利用方法」をご参照ください。

  • 戻り値の説明

    ARRAY 型の値を返します。

  • CREATE TABLE test_array_except_text (
        c1 text[],
        c2 text[]
    );
    
    INSERT INTO test_array_except_text
        VALUES (ARRAY['o', 'y', 'l', 'l', NULL, ''], NULL), (ARRAY['holo', 'hello', 'hello', 'SQL', '', 'blackhole'], ARRAY['holo', 'SQL', NULL, 'kk']);
    
    SELECT
        c1,
        c2,
        array_except (c1, c2)
    FROM
        test_array_except_text;

    次の結果が返されます。

                     c1                  |        c2        |   array_except
    -------------------------------------+------------------+-------------------
     {o,y,l,l,"",""}                     |                  | {o,l,y,""}
     {holo,hello,hello,SQL,"",blackhole} | {holo,SQL,"",kk} | {blackhole,hello}
    (2 rows)

ARRAY_DISTINCT

  • 説明:配列から重複した要素を削除します。

    array_distinct(array)

    パラメーターの説明

    • array:重複を削除する配列。

    注意事項:

    この関数は Hologres V1.3.19 以降でのみサポートされています。

    説明

    ご利用の Hologres インスタンスのバージョンが古い場合は、インスタンスをアップグレードするか、Hologres DingTalk グループに参加してフィードバックを提供してください。詳細については、「インスタンスのアップグレード」または「オンラインサポートの利用方法」をご参照ください。

  • 戻り値の説明

    ARRAY 型の値を返します。

  • CREATE TABLE test_array_distinct_text (
        c1 text[]
    );
    
    INSERT INTO test_array_distinct_text
        VALUES (ARRAY['holo', 'hello', 'holo', 'SQL', 'SQL']), (ARRAY[]::text[]);
    
    SELECT
        c1,
        array_distinct (c1)
    FROM
        test_array_distinct_text;

    次の結果が返されます。

                c1             |  array_distinct
    ---------------------------+------------------
     {holo,hello,holo,SQL,SQL} | {SQL,hello,holo}
     {}                        | {NULL}
    (2 rows)

ARRAY_UNION

  • 説明:2 つの配列を新しい配列にマージし、重複した要素を削除します。

    array_union(array1, array2)

    パラメーターの説明

    • array1:最初の配列。

    • array2:2 番目の配列。2 つの配列がマージされた後、重複が削除されます。

    注意事項:

    この関数は Hologres V1.3.19 以降でのみサポートされています。

    説明

    ご利用の Hologres インスタンスのバージョンが古い場合は、インスタンスをアップグレードするか、Hologres DingTalk グループに参加してフィードバックを提供してください。詳細については、「インスタンスのアップグレード」または「オンラインサポートの利用方法」をご参照ください。

  • 戻り値の説明

    ARRAY 型の値を返します。

  • CREATE TABLE test_array_union_int (
        c1 int[],
        c2 int[]
    );
    
    INSERT INTO test_array_union_int
        VALUES (NULL, ARRAY[2, -3, 2, 7]), (ARRAY[2, 7, -3, 2, 7], ARRAY[12, 9, 8, 7]);
    
    SELECT
        c1,
        c2,
        array_union (c1, c2)
    FROM
        test_array_union_int;

    次の結果が返されます。

          c1      |     c2     |   array_union
    --------------+------------+-----------------
     \N           | {2,-3,2,7} | {2,7,-3}
     {2,7,-3,2,7} | {12,9,8,7} | {9,2,7,8,12,-3}
    (2 rows)

REGEXP_MATCH

  • 説明:文字列を正規表現と照合し、一致した部分を配列で返します。

    REGEXP_MATCH(<str> TEXT, <pattern> TEXT) 
  • パラメーター

    • str:必須。照合する文字列。

    • pattern:必須。正規表現。

  • 戻り値

    ARRAY 型の値を返します。

  • SELECT regexp_match('foobarbequebaz', '(bar)(beque)');

    次の結果が返されます。

    regexp_match
    ------------
    {bar,beque}

REGEXP_SPLIT_TO_ARRAY

  • 説明:文字列を正規表現を使用して分割し、結果を配列として返す文字列分割関数です。

    REGEXP_SPLIT_TO_ARRAY(<str> TEXT, <pattern> TEXT)
  • パラメーター

    • str:必須。分割する文字列。

    • pattern:必須。文字列の分割方法を定義する正規表現。正規表現内の特殊文字と構造は、文字列内の区切り文字の位置を識別します。

  • 戻り値

    ARRAY 型の値を返します。

  • CREATE TABLE interests_test (
        name text,
        interests text
    );
    
    INSERT INTO interests_test
        VALUES ('Zhang San', 'singing,dancing'), ('Li Si', 'soccer,running,drawing'), ('Wang Wu', 'flower arranging,calligraphy,playing piano,sleeping');
    
    SELECT
        name,
        REGEXP_SPLIT_TO_ARRAY(interests, ',')
    FROM
        interests_test;
    

    次の結果が返されます。

      name   |                  regexp_split_to_array                  
    ---------+-----------------------------------------------------------
     Zhang San | {singing,dancing}
     Li Si   | {soccer,running,drawing}
     Wang Wu | {"flower arranging",calligraphy,"playing piano",sleeping}

演算子

演算子

戻り値の型

説明

利用シーン

結果

@>

BOOLEAN

最初の配列が 2 番目の配列を含むかどうかをチェックします。

SELECT ARRAY[1,2,3] @> ARRAY[1,2];

t

<@

BOOLEAN

最初の配列が 2 番目の配列に含まれているかどうかをチェックします。

SELECT ARRAY[1,2,3] <@ ARRAY[1,2];

f

&&

BOOLEAN

2 つの配列に共通の要素があるかどうかをチェックします。

説明

Hologres V1.3.37 以降では、入力として配列列をサポートしています。

SELECT ARRAY[1,2,3] && ARRAY[1,2];

t

高階配列関数

Hologres V3.2 以降では、いくつかの高階配列関数をサポートしています。詳細については、「LAMBDA 式と関連関数」をご参照ください。