Hologres kompatibel dengan PostgreSQL dan mendukung sintaks standar PostgreSQL. Topik ini menjelaskan fungsi array (ARRAY) yang didukung oleh Hologres beserta kasus penggunaannya.
Function | Feature |
Mengagregasi data dari beberapa baris dalam suatu kolom menjadi sebuah array. | |
Menambahkan elemen ke akhir array. | |
Menggabungkan dua array. | |
Memeriksa apakah suatu array berisi nilai tertentu. | |
Mengambil jumlah dimensi dari tipe array teks. | |
Menghapus elemen duplikat dari array. | |
Mengambil array yang tidak berisi elemen array tertentu. | |
Mengembalikan panjang dimensi array tertentu. | |
Mengembalikan batas bawah dimensi array tertentu. | |
Mengembalikan nilai maksimum dari semua elemen dalam array. Nilai NULL dilewati selama proses ini. | |
Mengembalikan nilai minimum dari semua elemen dalam array. | |
Mengembalikan jumlah dimensi array. | |
Menghapus semua elemen yang sama dengan nilai tertentu dari array satu dimensi. | |
Mengembalikan subskrip elemen tertentu dalam array satu dimensi. | |
Menambahkan elemen ke awal array. | |
Mengurutkan elemen-elemen array. | |
Menggabungkan elemen-elemen array menggunakan pemisah tertentu. Anda dapat menentukan string untuk merepresentasikan nilai NULL. | |
Menggabungkan dua array menjadi array baru dan menghapus elemen duplikat. | |
Mengembalikan batas atas dimensi array tertentu. | |
Mencocokkan string terhadap ekspresi reguler dan mengembalikan hasil pencocokan dalam bentuk array. | |
Memisahkan string berdasarkan ekspresi reguler dan mengonversi hasilnya menjadi array. | |
Memperluas setiap elemen array menjadi baris terpisah. |
Batasan
Fungsi array_max, array_min, array_contains, array_except, array_distinct, dan array_union tidak mendukung kueri konstan. Contohnya: SELECT array_max(ARRAY[-2, NULL, -3, -12, -7]);.
Fungsi array
ARRAY_TO_STRING
Deskripsi: Menggabungkan elemen-elemen array menggunakan pemisah tertentu. Anda dapat menentukan string untuk merepresentasikan nilai NULL dalam array.
array_to_string(anyarray, text[, text])Deskripsi Parameter
anyarray: Array yang elemennya ingin digabungkan.
text (parameter kedua): String yang digunakan sebagai pemisah.
text (parameter ketiga, opsional): String yang digunakan untuk merepresentasikan nilai NULL. Jika parameter ini tidak ditentukan, nilai NULL diabaikan.
Nilai kembalian
Mengembalikan nilai TEXT.
Contoh
-- Hasilnya adalah 1,2,3 SELECT array_to_string(ARRAY[1, 2, 3], ',')
ARRAY_AGG
Deskripsi: Mengagregasi data dari beberapa baris dalam suatu kolom menjadi array.
Metode 1:
array_agg(anyelement)Deskripsi parameter
anyelement: Kolom atau ekspresi yang akan diagregasi.
Catatan penggunaan:
Tipe data DECIMAL, DATE, TIMESTAMP, dan TIMESTAMPTZ hanya didukung di Hologres V1.3 dan versi yang lebih baru.
CatatanJika instans Hologres Anda merupakan versi sebelumnya, upgrade instans Anda atau bergabunglah dengan grup DingTalk Hologres untuk memberikan masukan. Untuk informasi lebih lanjut, lihat Peningkatan instans atau Bagaimana cara mendapatkan dukungan online tambahan?.
Tipe JSON, JSONB, TIMETZ, INTERVAL, INET, OID, UUID, dan ARRAY tidak didukung.
Metode 2:
array_agg (expression[ order_by_clause ] ) [ FILTER ( WHERE filter_clause ) ]Deskripsi parameter
expression: Ekspresi yang akan diagregasi.
order_by_clause (opsional): Klausul ORDER BY yang menentukan urutan pengurutan untuk agregasi.
filter_clause (opsional): Kondisi filter untuk klausa FILTER. Hanya baris yang memenuhi kondisi yang disertakan dalam agregasi.
Catatan penggunaan:
Klausul
FILTERhanya didukung di Hologres V1.3 dan versi yang lebih baru.CatatanJika instans Hologres Anda merupakan versi sebelumnya, upgrade instans Anda atau bergabunglah dengan grup DingTalk Hologres untuk memberikan masukan. Untuk informasi lebih lanjut, lihat Peningkatan instans atau Bagaimana cara mendapatkan dukungan online tambahan?.
Nilai kembalian
Mengembalikan nilai ARRAY.
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 berikut dikembalikan.
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 berikut dikembalikan.
array_agg ----------- {2} (1 row)
ARRAY_APPEND
Deskripsi: Menambahkan elemen ke akhir array.
array_append(anyarray, anyelement)Deskripsi Parameter
anyarray: Array sumber.
anyelement: Elemen yang akan ditambahkan ke akhir array.
Nilai kembalian
Mengembalikan nilai ARRAY.
Contoh
-- Hasilnya adalah {1,2,3} SELECT array_append(ARRAY[1,2], 3);
ARRAY_CAT
Deskripsi: Menggabungkan dua array.
array_cat(anyarray,anyarray)Deskripsi Parameter
anyarray (parameter pertama): Array pertama.
anyarray (parameter kedua): Array kedua.
Nilai kembalian
Mengembalikan nilai ARRAY.
Contoh
-- Hasilnya adalah {1,2,3,4,5} SELECT array_cat(ARRAY[1,2,3], ARRAY[4,5]);
ARRAY_NDIMS
Deskripsi: Mengembalikan jumlah dimensi array.
array_ndims(anyarray)Deskripsi Parameter
anyarray: Array yang akan diperiksa.
Nilai kembalian
Mengembalikan nilai INT.
Contoh
-- Hasilnya adalah 2 SELECT array_ndims(ARRAY[[1,2,3], [4,5,6]]);
ARRAY_DIMS
Deskripsi: Mengambil jumlah dimensi dari tipe array teks.
array_dims(anyarray)Deskripsi Parameter
anyarray: Array yang akan diperiksa.
Nilai kembalian
Mengembalikan nilai TEXT.
Contoh
-- Hasilnya adalah [1:2][1:3] SELECT array_dims(ARRAY[[1,2,3], [4,5,6]]);
ARRAY_LENGTH
Deskripsi: Mengembalikan panjang dimensi array tertentu.
array_length(anyarray, int)Deskripsi Parameter
anyarray: Array yang akan diperiksa.
int: Dimensi yang panjangnya ingin diperoleh. Dimensi dinomori mulai dari 1.
Nilai kembalian
Mengembalikan nilai INT.
Contoh
-- Hasilnya adalah 3 SELECT array_length(ARRAY[1,2,3], 1);
ARRAY_LOWER
Deskripsi: Mengembalikan batas bawah dimensi array tertentu.
array_lower(anyarray, int)Deskripsi Parameter
anyarray: Array yang akan diperiksa.
int: Dimensi yang batas bawahnya ingin diperoleh. Dimensi dinomori mulai dari 1.
Nilai kembalian
Mengembalikan nilai INT.
Contoh
-- Hasilnya adalah 0 SELECT array_lower('[0:2]={1,2,3}'::int[], 1);
ARRAY_POSITIONS
Deskripsi: Mengembalikan subskrip elemen tertentu dalam array satu dimensi.
array_positions(anyarray, anyelement)Deskripsi Parameter
anyarray: Array satu dimensi yang akan diperiksa.
anyelement: Elemen yang subskripnya ingin ditemukan.
Nilai kembalian
Mengembalikan nilai ARRAY.
Contoh
-- Hasilnya adalah {1,2,4} SELECT array_positions(ARRAY['A','A','B','A'], 'A');
ARRAY_PREPEND
Deskripsi: Menambahkan elemen ke awal array.
array_prepend(anyelement, anyarray)Deskripsi Parameter
anyelement: Elemen yang akan ditambahkan ke awal array.
anyarray: Array sumber.
Nilai kembalian
Mengembalikan nilai ARRAY.
Contoh
-- Hasilnya adalah {1,2,3} SELECT array_prepend(1, ARRAY[2,3]);
ARRAY_REMOVE
Deskripsi: Menghapus semua elemen yang sama dengan nilai tertentu dari array satu dimensi.
array_remove(anyarray, anyelement)Deskripsi Parameter
anyarray: Array satu dimensi yang akan diproses.
anyelement: Nilai yang akan dihapus dari array. Semua elemen yang sama dengan nilai ini dihapus.
Nilai kembalian
Mengembalikan nilai ARRAY.
Contoh
-- Hasilnya adalah {1,3} SELECT array_remove(ARRAY[1,2,3,2], 2);
ARRAY_SORT
Deskripsi: Mengurutkan elemen-elemen array.
array_sort(anyarray)Deskripsi Parameter
anyarray: Array yang akan diurutkan.
Catatan penggunaan:
Hologres V1.1.46 dan versi yang lebih baru mendukung array TEXT. Array TEXT dikonversi menjadi array INT8 untuk pengurutan, dan array TEXT yang telah diurutkan dikembalikan.
Hologres V1.3.18 dan versi yang lebih baru mendukung array INT4, INT8, FLOAT4, FLOAT8, dan BOOLEAN. Array TEXT diurutkan secara leksikografis.
Nilai kembalian
Mengembalikan nilai ARRAY.
Contoh
-- Hasilnya adalah {1,1,2,3} SELECT array_sort(ARRAY[1,3,2,1]);
ARRAY_UPPER
Deskripsi: Mengembalikan batas atas dimensi array tertentu.
array_upper(anyarray, int)Deskripsi Parameter
anyarray: Array yang akan diperiksa.
int: Dimensi yang batas atasnya ingin diperoleh. Dimensi dinomori mulai dari 1.
Nilai kembalian
Mengembalikan nilai INT.
Contoh
-- Hasilnya adalah 4 SELECT array_upper(ARRAY[1,8,3,7], 1);
UNNEST
Deskripsi: Memperluas setiap elemen array menjadi baris terpisah.
unnest(anyarray)Deskripsi Parameter
anyarray: Array yang akan diperluas.
Nilai kembalian
Mengembalikan nilai TEXT.
Contoh
SELECT unnest(ARRAY[1,2]);Hasil berikut dikembalikan.
unnest ------ 1 2 (2 rows)
ARRAY_MAX
Deskripsi: Mengembalikan nilai maksimum dari semua elemen dalam array. Nilai NULL dilewati selama perhitungan.
array_max(array)Deskripsi parameter
array: Array yang akan dihitung. Nilai NULL dilewati selama perhitungan.
Catatan penggunaan:
Fungsi ini hanya didukung di Hologres V1.3.19 dan versi yang lebih baru.
CatatanJika instans Hologres Anda merupakan versi sebelumnya, upgrade instans Anda atau bergabunglah dengan grup DingTalk Hologres untuk memberikan masukan. Untuk informasi lebih lanjut, lihat Peningkatan instans atau Bagaimana cara mendapatkan dukungan online tambahan?.
Nilai kembalian
Mengembalikan nilai INT.
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 berikut dikembalikan.
c1 | array_max ------------------+----------- \N |\N {-2,0,-3,-12,-7} | 0 (2 rows)
ARRAY_MIN
Deskripsi: Mengembalikan nilai minimum dari semua elemen dalam array.
array_min(array)Deskripsi parameter
array: Array yang akan dihitung.
Catatan penggunaan:
Fungsi ini hanya didukung di Hologres V1.3.19 dan versi yang lebih baru.
CatatanJika instans Hologres Anda merupakan versi sebelumnya, upgrade instans Anda atau bergabunglah dengan grup DingTalk Hologres untuk memberikan masukan. Untuk informasi lebih lanjut, lihat Peningkatan instans atau Bagaimana cara mendapatkan dukungan online tambahan?.
Nilai kembalian
Mengembalikan nilai INT.
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 berikut dikembalikan.
c1 | array_min ------------------------------+----------- \N |\N {hello,holo,blackhole,array} | array (2 rows)
ARRAY_CONTAINS
Deskripsi: Memeriksa apakah suatu array berisi nilai tertentu.
array_contains(array, target_value)Deskripsi Parameter
array: Array yang akan diperiksa.
target_value: Nilai target yang akan diperiksa keberadaannya dalam array.
Catatan penggunaan:
Fungsi ini hanya didukung di Hologres V1.3.19 dan versi yang lebih baru.
CatatanJika instans Hologres Anda merupakan versi sebelumnya, upgrade instans Anda atau bergabunglah dengan grup DingTalk Hologres untuk memberikan masukan. Untuk informasi lebih lanjut, lihat Peningkatan instans atau Bagaimana cara mendapatkan dukungan online tambahan?.
Nilai kembalian
Mengembalikan nilai BOOLEAN. Jika array berisi nilai yang ditentukan, fungsi mengembalikan
true. Jika tidak, mengembalikanfalse.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 berikut dikembalikan.
c1 | c2 | array_contains --------------------------+----------+---------------- {holo,array,FE,l,"",""} | function | f {"",cs,holo,sql,a,"",""} | holo | t (2 rows)
ARRAY_EXCEPT
Deskripsi: Mengembalikan array tanpa elemen array tertentu.
array_except(array1, array2)Deskripsi parameter
array1: Array sumber.
array2: Array elemen yang akan dikecualikan dari array1. Hasilnya adalah array elemen yang ada di array1 tetapi tidak ada di array2.
Catatan penggunaan:
Fungsi ini hanya didukung di Hologres V1.3.19 dan versi yang lebih baru.
CatatanJika instans Hologres Anda merupakan versi sebelumnya, upgrade instans Anda atau bergabunglah dengan grup DingTalk Hologres untuk memberikan masukan. Untuk informasi lebih lanjut, lihat Peningkatan instans atau Bagaimana cara mendapatkan dukungan online tambahan?.
Nilai kembalian
Mengembalikan nilai ARRAY.
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 berikut dikembalikan.
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
Deskripsi: Menghapus elemen duplikat dari array.
array_distinct(array)Deskripsi parameter
array: Array yang akan dihapus elemen duplikatnya.
Catatan penggunaan:
Fungsi ini hanya didukung di Hologres V1.3.19 dan versi yang lebih baru.
CatatanJika instans Hologres Anda merupakan versi sebelumnya, upgrade instans Anda atau bergabunglah dengan grup DingTalk Hologres untuk memberikan masukan. Untuk informasi lebih lanjut, lihat Peningkatan instans atau Bagaimana cara mendapatkan dukungan online tambahan?.
Nilai kembalian
Mengembalikan nilai ARRAY.
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 berikut dikembalikan.
c1 | array_distinct ---------------------------+------------------ {holo,hello,holo,SQL,SQL} | {SQL,hello,holo} {} | {NULL} (2 rows)
ARRAY_UNION
Deskripsi: Menggabungkan dua array menjadi array baru dan menghapus elemen duplikat.
array_union(array1, array2)Deskripsi parameter
array1: Array pertama.
array2: Array kedua. Duplikat dihapus setelah kedua array digabungkan.
Catatan penggunaan:
Fungsi ini hanya didukung di Hologres V1.3.19 dan versi yang lebih baru.
CatatanJika instans Hologres Anda merupakan versi sebelumnya, upgrade instans Anda atau bergabunglah dengan grup DingTalk Hologres untuk memberikan masukan. Untuk informasi lebih lanjut, lihat Peningkatan instans atau Bagaimana cara mendapatkan dukungan online tambahan?.
Nilai kembalian
Mengembalikan nilai ARRAY.
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 berikut dikembalikan.
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: Mencocokkan string terhadap ekspresi reguler dan mengembalikan hasil pencocokan dalam bentuk array.
REGEXP_MATCH(<str> TEXT, <pattern> TEXT)Parameter
str: Wajib diisi. String yang akan dicocokkan.
pattern: Wajib diisi. Ekspresi reguler.
Nilai kembalian
Mengembalikan nilai bertipe ARRAY.
Contoh
SELECT regexp_match('foobarbequebaz', '(bar)(beque)');Hasil berikut dikembalikan.
regexp_match ------------ {bar,beque}
REGEXP_SPLIT_TO_ARRAY
Deskripsi: Fungsi pemisahan string yang membagi string menggunakan ekspresi reguler dan mengembalikan hasilnya sebagai array.
REGEXP_SPLIT_TO_ARRAY(<str> TEXT, <pattern> TEXT)Parameter
str: Wajib diisi. String yang akan dibagi.
pattern: Wajib diisi. Ekspresi reguler yang menentukan cara membagi string. Karakter dan konstruksi khusus dalam ekspresi reguler mengidentifikasi posisi pembatas dalam string.
Nilai kembalian
Mengembalikan nilai bertipe ARRAY.
Contoh
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;Hasil berikut dikembalikan.
name | regexp_split_to_array ---------+----------------------------------------------------------- Zhang San | {singing,dancing} Li Si | {soccer,running,drawing} Wang Wu | {"flower arranging",calligraphy,"playing piano",sleeping}
Operator
Operator | Return type | Description | Use case | Result |
@> | BOOLEAN | Memeriksa apakah array pertama berisi array kedua. |
| t |
<@ | BOOLEAN | Memeriksa apakah array pertama termuat dalam array kedua. |
| f |
&& | BOOLEAN | Memeriksa apakah kedua array memiliki elemen yang sama. Catatan Hologres V1.3.37 dan versi yang lebih baru mendukung kolom array sebagai input. |
| t |
Fungsi array orde tinggi
Hologres V3.2 dan versi yang lebih baru mendukung beberapa fungsi array orde tinggi. Untuk informasi lebih lanjut, lihat Ekspresi LAMBDA dan fungsi terkait.