全部产品
Search
文档中心

Hologres:Fungsi array

更新时间:Aug 07, 2025

Hologres kompatibel dengan PostgreSQL dan mendukung penggunaan sintaksis standar PostgreSQL untuk pengembangan data. Topik ini menjelaskan fungsi array yang didukung oleh Hologres beserta contoh-contohnya.

Fungsi

Deskripsi

ARRAY_AGG

Menggabungkan beberapa baris data dalam kolom menjadi sebuah array.

ARRAY_APPEND

Menambahkan elemen ke akhir array.

ARRAY_CAT

Menggabungkan dua array.

ARRAY_CONTAINS

Memeriksa apakah array berisi nilai tertentu.

ARRAY_DIMS

Mengembalikan representasi teks dari dimensi array.

ARRAY_DISTINCT

Menghapus elemen duplikat dari array.

ARRAY_EXCEPT

Mengembalikan array yang tidak berisi elemen tertentu.

ARRAY_LENGTH

Mengembalikan panjang dimensi dari array yang diminta.

ARRAY_LOWER

Mengembalikan batas bawah dari dimensi array yang diminta.

ARRAY_MAX

Mengembalikan nilai maksimum di antara semua data dalam array. Nilai NULL tidak digunakan untuk perhitungan.

ARRAY_MIN

Mengembalikan nilai minimum di antara semua data dalam array.

ARRAY_NDIMS

Mengembalikan jumlah dimensi dari array.

ARRAY_REMOVE

Menghapus semua elemen yang sama dengan nilai tertentu dari array. Array harus satu dimensi.

ARRAY_POSITIONS

Mengembalikan indeks elemen tertentu dalam array. Array harus satu dimensi.

ARRAY_PREPEND

Menambahkan elemen ke awal array.

ARRAY_SORT

Mengurutkan elemen dalam array.

ARRAY_TO_STRING

Menggabungkan elemen array menggunakan pemisah tertentu. Jika ada nilai NULL dalam array, Anda dapat menentukan bagaimana merepresentasikan nilai NULL tersebut.

ARRAY_UNION

Menggabungkan dua array menjadi array baru yang tidak berisi elemen duplikat.

ARRAY_UPPER

Mengembalikan batas atas dari dimensi array yang diminta.

REGEXP_MATCH

Memadankan isi string menggunakan ekspresi reguler. Fragmen konten yang memenuhi kondisi pencocokan ditampilkan dalam array yang dikembalikan.

REGEXP_SPLIT_TO_ARRAY

Memisahkan string berdasarkan ekspresi reguler dan mengonversi string menjadi array.

UNNEST

Mengembalikan elemen array yang ditampilkan dalam beberapa baris.

Batasan

array_max, array_min, array_contains, array_except, array_distinct, dan array_union tidak mendukung kueri yang menggunakan konstanta. Contoh: SELECT array_max(ARRAY[-2, NULL, -3, -12, -7]);.

Fungsi array

ARRAY_TO_STRING

  • Menggabungkan elemen-elemen array menggunakan pemisah tertentu. Jika terdapat nilai NULL dalam array, Anda dapat menentukan cara merepresentasikan nilai NULL tersebut.

    array_to_string(anyarray, text[, text])
  • Nilai Kembali

    Nilai bertipe TEXT dikembalikan.

  • Contoh

    -- Hasil: 1,2,3
    SELECT array_to_string(ARRAY[1, 2, 3], ',')

ARRAY_AGG

  • Menggabungkan beberapa baris data dalam kolom menjadi array.

    • Metode 1

      array_agg(anyelement)

      Catatan Penggunaan:

      • Hanya Hologres V1.3 dan versi lebih tinggi yang mendukung tipe data DECIMAL, DATE, TIMESTAMP, dan TIMESTAMPTZ.

        Catatan

        Jika instans Hologres Anda adalah versi sebelumnya, tingkatkan instans atau bergabunglah dengan grup DingTalk Hologres untuk dukungan. Untuk informasi lebih lanjut, lihat Dapatkan dukungan online untuk Hologres.

      • Tipe data JSON, JSONB, TIMETZ, INTERVAL, INET, OID, UUID, dan ARRAY tidak didukung.

    • Metode 2

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

      Catatan Penggunaan:

      Hanya Hologres V1.3 dan versi lebih tinggi yang mendukung FILTER.

      Catatan

      Jika instans Hologres Anda adalah versi sebelumnya, tingkatkan instans atau bergabunglah dengan grup DingTalk Hologres untuk dukungan. Untuk informasi lebih lanjut, lihat Dapatkan dukungan online untuk Hologres

  • Nilai Kembali

    Nilai bertipe ARRAY dikembalikan.

  • Contoh

    • Contoh 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;

      Hasil:

       array_agg
      -----------
       {2,1}
      (1 row)
    • Contoh 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;

      Hasil:

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

ARRAY_APPEND

  • Menambahkan elemen ke akhir array.

    array_append(anyarray, anyelement)
  • Nilai Kembali

    Nilai bertipe ARRAY dikembalikan.

  • Contoh

    -- Hasil: 1,2,3
    SELECT array_append(ARRAY[1,2], 3);

ARRAY_CAT

  • Menggabungkan dua array.

    array_cat(anyarray,anyarray)
  • Nilai Kembali

    Nilai bertipe ARRAY dikembalikan.

  • Contoh

    -- Hasil: {1,2,3,4,5}
    SELECT array_cat(ARRAY[1,2,3], ARRAY[4,5]);

ARRAY_NDIMS

  • Mengembalikan jumlah dimensi dari array.

    array_ndims(anyarray)
  • Nilai Kembali

    Nilai bertipe INT dikembalikan.

  • Contoh

    -- Hasil: 2
    SELECT array_ndims(ARRAY[[1,2,3], [4,5,6]]);

ARRAY_DIMS

  • Mengembalikan representasi teks dari dimensi array.

    array_dims(anyarray)
  • Nilai Kembali

    Nilai bertipe TEXT dikembalikan.

  • Contoh

    -- Hasil: [1:2][1:3]
    SELECT array_dims(ARRAY[[1,2,3], [4,5,6]]);

ARRAY_LENGTH

  • Mengembalikan panjang dimensi dari array yang diminta.

    array_length(anyarray, int)
  • Nilai Kembali

    Nilai bertipe INT dikembalikan.

  • Contoh

    -- Hasil: 3
    SELECT array_length(ARRAY[1,2,3], 1);

ARRAY_LOWER

  • Mengembalikan batas bawah dari dimensi array yang diminta.

    array_lower(anyarray, int)	
  • Nilai Kembali

    Nilai bertipe INT dikembalikan.

  • Contoh

    -- Hasil: 0
    SELECT array_lower('[0:2]={1,2,3}'::int[], 1);

ARRAY_POSITIONS

  • Mengembalikan indeks elemen tertentu dalam array. Array harus satu dimensi.

    array_positions(anyarray, anyelement)
  • Nilai Kembali

    Nilai bertipe ARRAY dikembalikan.

  • Contoh

    -- Hasil: {1,2,4}
    SELECT array_positions(ARRAY['A','A','B','A'], 'A');

ARRAY_PREPEND

  • Menambahkan elemen ke awal array.

    array_prepend(anyelement, anyarray)
  • Nilai Kembali

    Nilai bertipe ARRAY dikembalikan.

  • Contoh

    -- Hasil: 1,2,3
    SELECT array_prepend(1, ARRAY[2,3]);

ARRAY_REMOVE

  • Menghapus semua elemen yang sama dengan nilai tertentu dari array. Array harus satu dimensi.

    array_remove(anyarray, anyelement)
  • Nilai Kembali

    Nilai bertipe ARRAY dikembalikan.

  • Contoh

    -- Hasil: {1,3}
    SELECT array_remove(ARRAY[1,2,3,2], 2);

ARRAY_SORT

  • Mengurutkan elemen dalam array.

    array_sort(anyarray)

    Catatan Penggunaan:

    • Hologres V1.1.46 dan versi lebih tinggi mendukung array TEXT. Array TEXT dikonversi menjadi array INT8 untuk pengurutan dan array TEXT yang telah diurutkan dikembalikan.

    • Hologres V1.3.18 dan versi lebih tinggi mendukung array tipe data INT4, INT8, FLOAT4, FLOAT8, dan BOOLEAN. Array tipe data TEXT diurutkan dalam urutan leksikografis.

  • Nilai Kembali

    Nilai bertipe ARRAY dikembalikan.

  • Contoh

    -- Hasil: {1,1,2,3}
    SELECT array_sort(ARRAY[1,3,2,1]);

ARRAY_UPPER

  • Mengembalikan batas atas dari dimensi array yang diminta.

    array_upper(anyarray, int)
  • Nilai Kembali

    Nilai bertipe INT dikembalikan.

  • Contoh

    -- Hasil: 4
    SELECT array_upper(ARRAY[1,8,3,7], 1);

UNNEST

  • Mengembalikan elemen array yang ditampilkan dalam beberapa baris.

    unnest(anyarray)
  • Nilai Kembali

    Nilai bertipe TEXT dikembalikan.

  • Contoh

    SELECT unnest(ARRAY[1,2]);

    Hasil:

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

ARRAY_MAX

  • Mengembalikan nilai maksimum di antara semua data dalam array. Nilai NULL tidak digunakan dalam perhitungan.

    array_max(array)

    Catatan Penggunaan:

    Hanya Hologres V1.3.19 dan versi lebih tinggi yang mendukung fungsi ini.

    Catatan

    Jika instans Hologres Anda adalah versi sebelumnya, tingkatkan instans atau bergabunglah dengan grup DingTalk Hologres untuk dukungan. Untuk informasi lebih lanjut, lihat Dapatkan dukungan online untuk Hologres

  • Nilai Kembali

    Nilai bertipe INT dikembalikan.

  • Contoh

    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;

    Hasil:

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

ARRAY_MIN

  • Mengembalikan nilai minimum di antara semua data dalam array.

    array_min(array)

    Catatan Penggunaan:

    Hanya Hologres V1.3.19 dan versi lebih tinggi yang mendukung fungsi ini.

    Catatan

    Jika instans Hologres Anda adalah versi sebelumnya, tingkatkan instans atau bergabunglah dengan grup DingTalk Hologres untuk dukungan. Untuk informasi lebih lanjut, lihat Dapatkan dukungan online untuk Hologres

  • Nilai Kembali

    Nilai bertipe INT dikembalikan.

  • Contoh

    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;

    Hasil:

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

ARRAY_CONTAINS

  • Memeriksa apakah array berisi nilai tertentu.

    array_contains(array, target_value)

    Catatan Penggunaan:

    Hanya Hologres V1.3.19 dan versi lebih tinggi yang mendukung fungsi ini.

    Catatan

    Jika instans Hologres Anda adalah versi sebelumnya, <tingkatkan instans atau bergabunglah dengan grup DingTalk Hologres untuk dukungan. Untuk informasi lebih lanjut, lihat Dapatkan dukungan online untuk Hologres

  • Nilai Kembali

    Nilai bertipe BOOLEAN dikembalikan. Jika array berisi nilai tertentu, true dikembalikan. Sebaliknya, false dikembalikan.

  • Contoh

    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;

    Hasil:

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

ARRAY_EXCEPT

  • Mengembalikan array yang tidak berisi elemen tertentu.

    array_except(array1, array2)

    Catatan Penggunaan:

    Hanya Hologres V1.3.19 dan versi lebih tinggi yang mendukung fungsi ini.

    Catatan

    Jika instans Hologres Anda adalah versi sebelumnya, tingkatkan instans atau bergabunglah dengan grup DingTalk Hologres untuk dukungan. Untuk informasi lebih lanjut, lihat Dapatkan dukungan online untuk Hologres

  • Nilai Kembali

    Nilai bertipe ARRAY dikembalikan.

  • Contoh

    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;

    Hasil:

                     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

  • Menghapus elemen duplikat dari array.

    array_distinct(array)

    Catatan Penggunaan:

    Hanya Hologres V1.3.19 dan versi lebih tinggi yang mendukung fungsi ini.

    Catatan

    Jika instans Hologres Anda adalah versi sebelumnya, tingkatkan instans atau bergabunglah dengan grup DingTalk Hologres untuk dukungan. Untuk informasi lebih lanjut, lihat Dapatkan dukungan online untuk Hologres

  • Nilai Kembali

    Nilai bertipe ARRAY dikembalikan.

  • Contoh

    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;

    Hasil:

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

ARRAY_UNION

  • Menggabungkan dua array menjadi array baru yang tidak berisi elemen duplikat.

    array_union(array1, array2)

    Catatan Penggunaan:

    Hanya Hologres V1.3.19 dan versi lebih tinggi yang mendukung fungsi ini.

    Catatan

    Jika instans Hologres Anda adalah versi sebelumnya, tingkatkan instans atau bergabunglah dengan grup DingTalk Hologres untuk dukungan. Untuk informasi lebih lanjut, lihat Dapatkan dukungan online untuk Hologres

  • Nilai Kembali

    Nilai bertipe ARRAY dikembalikan.

  • Contoh

    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;

    Hasil:

          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

  • Deskripsi: Memadankan isi string menggunakan ekspresi reguler. Fragmen konten yang memenuhi kondisi pencocokan ditampilkan dalam array.

    REGEXP_MATCH(<str> TEXT, <pattern> TEXT) 
  • Parameter

    • str: wajib. String yang akan dicocokkan.

    • pattern: wajib. Ekspresi reguler.

  • Nilai Kembali

    Nilai bertipe ARRAY dikembalikan.

  • Contoh

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

    Hasil berikut dikembalikan:

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

REGEXP_SPLIT_TO_ARRAY

  • Deskripsi: Memisahkan string berdasarkan ekspresi reguler dan mengembalikan array.

    REGEXP_SPLIT_TO_ARRAY(<str> TEXT, <pattern> TEXT)
  • Parameter

    • str: wajib. String yang akan dipisahkan.

    • pattern: wajib. Ekspresi reguler berdasarkan mana string dipisahkan. String dipisahkan berdasarkan karakter khusus dan konstruksi dalam ekspresi reguler.

  • Nilai Kembali

    Nilai bertipe ARRAY dikembalikan.

  • Contoh

    CREATE TABLE interests_test (
        name text,
        intrests text
    );
    
    INSERT INTO interests_test
        VALUES ('Ava', 'singing, dancing'), ('Bob', 'playing football, running, painting'), ('Jack', 'arranging flowers, writing calligraphy, playing the piano, sleeping');
    
    SELECT
        name,
        REGEXP_SPLIT_TO_ARRAY(intrests, ',')
    FROM
        interests_test;
    

    Hasil berikut dikembalikan:

    name | regexp_split_to_array
    ----------------------------
    Ava | {singing, dancing}
    Bob | {playing football, running, painting}
    Jack | {arranging flowers, writing calligraphy, playing the piano, sleeping}

Operator

Operator

Tipe nilai kembali

Deskripsi

Contoh

Hasil

@>

BOOLEAN

Memeriksa apakah Array A berisi Array B.

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

t

<@

BOOLEAN

Memeriksa apakah Array A terkandung oleh Array B.

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

f

&&

BOOLEAN

Memeriksa apakah dua array memiliki elemen yang sama.

Catatan

Dalam Hologres V1.3.37 dan versi lebih tinggi, data bertipe ARRAY dapat digunakan sebagai parameter input.

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

t

Fungsi array orde tinggi

Dalam V3.2 dan versi lebih tinggi, Hologres mendukung fungsi array orde tinggi. Lihat Ekspresi LAMBDA dan fungsi terkait untuk detail lebih lanjut.