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 |
Menggabungkan beberapa baris data dalam kolom menjadi sebuah array. | |
Menambahkan elemen ke akhir array. | |
Menggabungkan dua array. | |
Memeriksa apakah array berisi nilai tertentu. | |
Mengembalikan representasi teks dari dimensi array. | |
Menghapus elemen duplikat dari array. | |
Mengembalikan array yang tidak berisi elemen tertentu. | |
Mengembalikan panjang dimensi dari array yang diminta. | |
Mengembalikan batas bawah dari dimensi array yang diminta. | |
Mengembalikan nilai maksimum di antara semua data dalam array. Nilai NULL tidak digunakan untuk perhitungan. | |
Mengembalikan nilai minimum di antara semua data dalam array. | |
Mengembalikan jumlah dimensi dari array. | |
Menghapus semua elemen yang sama dengan nilai tertentu dari array. Array harus satu dimensi. | |
Mengembalikan indeks elemen tertentu dalam array. Array harus satu dimensi. | |
Menambahkan elemen ke awal array. | |
Mengurutkan elemen dalam array. | |
Menggabungkan elemen array menggunakan pemisah tertentu. Jika ada nilai NULL dalam array, Anda dapat menentukan bagaimana merepresentasikan nilai NULL tersebut. | |
Menggabungkan dua array menjadi array baru yang tidak berisi elemen duplikat. | |
Mengembalikan batas atas dari dimensi array yang diminta. | |
Memadankan isi string menggunakan ekspresi reguler. Fragmen konten yang memenuhi kondisi pencocokan ditampilkan dalam array yang dikembalikan. | |
Memisahkan string berdasarkan ekspresi reguler dan mengonversi string menjadi array. | |
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.
CatatanJika 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.CatatanJika 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.
CatatanJika 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.
CatatanJika 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.
CatatanJika 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,
truedikembalikan. Sebaliknya,falsedikembalikan.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.
CatatanJika 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.
CatatanJika 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.
CatatanJika 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. |
| t |
<@ | BOOLEAN | Memeriksa apakah Array A terkandung oleh Array B. |
| 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. |
| 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.