Tüm Ürünler
Search
Belge Merkezi

Hologres:Array functions

Son Güncelleme:Oct 06, 2026

Hologres PostgreSQL ile uyumludur ve standart PostgreSQL dizi işlevlerini destekler. Ayrıca küme işlemleri ve toplama işlemleri için çeşitli uzantılar sunar. Bu konuda her bir işlevin sözdizimi, parametreleri ve örnekleri açıklanmaktadır.

Sınırlamalar

array_max, array_min, array_contains, array_except, array_distinct ve array_union işlevleri sabit sorguları desteklemez. Örneğin, SELECT array_max(ARRAY[-2, NULL, -3, -12, -7]); sorgusu desteklenmez; bunun yerine bir tablodan dizi sütunlarını girdi olarak kullanın.

İşlev referansı

İşlev Sözdizimi Dönüş Değeri Açıklama
ARRAY_AGG array_agg(anyelement) ARRAY Birden çok satırdaki sütun değerlerini bir dizide toplar.
ARRAY_APPEND array_append(anyarray, anyelement) ARRAY Bir öğeyi dizinin sonuna ekler.
ARRAY_CAT array_cat(anyarray, anyarray) ARRAY İki diziyi birleştirir.
ARRAY_CONTAINS array_contains(array, target_value) BOOLEAN Bir dizinin belirli bir değer içerip içermediğini denetler.
ARRAY_DIMS array_dims(anyarray) TEXT Bir dizinin boyut sınırlarını metin dizesi olarak döndürür.
ARRAY_DISTINCT array_distinct(array) ARRAY Bir diziden yinelenen öğeleri kaldırır.
ARRAY_EXCEPT array_except(array1, array2) ARRAY array1 içinde bulunan ancak array2 içinde bulunmayan öğeleri döndürür.
ARRAY_LENGTH array_length(anyarray, int) INT Belirtilen dizi boyutundaki öğe sayısını döndürür.
ARRAY_LOWER array_lower(anyarray, int) INT Belirtilen dizi boyutunun alt sınırını döndürür.
ARRAY_MAX array_max(array) INT NULL değerleri atlayarak en büyük öğe değerini döndürür.
ARRAY_MIN array_min(array) INT En küçük öğe değerini döndürür.
ARRAY_NDIMS array_ndims(anyarray) INT Bir dizinin boyut sayısını döndürür.
ARRAY_POSITIONS array_positions(anyarray, anyelement) ARRAY Tek boyutlu bir dizideki bir öğenin tüm oluşumlarının alt simgelerini döndürür.
ARRAY_PREPEND array_prepend(anyelement, anyarray) ARRAY Bir öğeyi dizinin başına ekler.
ARRAY_REMOVE array_remove(anyarray, anyelement) ARRAY Tek boyutlu bir diziden belirtilen değere eşit olan tüm öğeleri kaldırır.
ARRAY_SORT array_sort(anyarray) ARRAY Bir dizinin öğelerini artan düzende sıralar.
ARRAY_TO_STRING array_to_string(anyarray, text[, text]) TEXT Dizi öğelerini bir ayırıcı kullanarak birleştirir; isteğe bağlı olarak NULL değerlerinin yerine başka bir değer koyar.
ARRAY_UNION array_union(array1, array2) ARRAY İki diziyi birleştirir ve yinelenen öğeleri kaldırır.
ARRAY_UPPER array_upper(anyarray, int) INT Belirtilen dizi boyutunun üst sınırını döndürür.
REGEXP_MATCH regexp_match(text, text) ARRAY Bir dizeyi düzenli ifadeyle eşleştirir ve yakalanan alt dizeleri döndürür.
REGEXP_SPLIT_TO_ARRAY regexp_split_to_array(text, text) ARRAY Bir dizeyi düzenli ifadeye göre böler ve parçaları bir dizi olarak döndürür.
UNNEST unnest(anyarray) setof TEXT Her bir dizi öğesini ayrı bir satıra genişletir.

Dizi işlevleri

ARRAY_TO_STRING

array_to_string(anyarray, text[, text]) → TEXT

Belirtilen bir ayırıcı kullanarak dizi öğelerini birleştirir. Üçüncü bağımsız değişken isteğe bağlıdır ve NULL öğelerin yerine kullanılacak değeri belirtir; bu bağımsız değişken belirtilmezse NULL değerleri atlanır.

Parametreler

Parametre Zorunlu Açıklama
anyarray Evet Öğeleri birleştirilecek dizi.
text (2.) Evet Ayırıcı dize.
text (3.) Hayır NULL değerlerinin yerine kullanılacak dize.

Örnek

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

ARRAY_AGG

array_agg(anyelement) → ARRAY

Birden çok satırdaki sütun değerlerini tek bir dizide toplar. İki sözdizimi biçimi desteklenir.

Sözdizimi 1: Temel toplama

array_agg(anyelement)

Sözdizimi 2: Sıralama ve filtreleme ile toplama

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

Parametreler

Parametre Zorunlu Açıklama
anyelement / expression Evet Toplanacak sütun veya ifade.
order_by_clause Hayır Sonuç dizisindeki öğe sırasını denetleyen ORDER BY yan tümcesi.
filter_clause Hayır FILTER yan tümcesi için koşul. Yalnızca bu koşulu karşılayan satırlar dahil edilir.

Kullanım notları

  • Hologres V1.3 ve sonraki sürümlerde desteklenen türler: DECIMAL, DATE, TIMESTAMP, TIMESTAMPTZ.

  • Desteklenmeyen türler: JSON, JSONB, TIMETZ, INTERVAL, INET, OID, UUID, ARRAY.

  • FILTER yan tümcesini kullanmak için Hologres V1.3 veya sonraki bir sürüm gerekir. Örneğinizi yükseltmek için bkz. Instance upgradation veya How do I get more online support?.

Örnekler

Temel toplama:

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;

Sonuç:

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

FILTER ile toplama (Hologres V1.3+ gerekir):

SELECT array_agg(c1) FILTER (WHERE c1 > 1)
FROM test_array_agg_int;

Sonuç:

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

ARRAY_APPEND

array_append(anyarray, anyelement) → ARRAY

Bir öğeyi dizinin sonuna ekler.

Parametreler

Parametre Zorunlu Açıklama
anyarray Evet Kaynak dizi.
anyelement Evet Eklenecek öğe.

Örnek

-- Result: {1,2,3}
SELECT array_append(ARRAY[1,2], 3);

ARRAY_CAT

array_cat(anyarray, anyarray) → ARRAY

Aynı öğe türüne sahip iki diziyi birleştirir.

Parametreler

Parametre Zorunlu Açıklama
anyarray (1.) Evet İlk dizi.
anyarray (2.) Evet İkinci dizi.

Örnek

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

ARRAY_NDIMS

array_ndims(anyarray) → INT

Bir dizinin boyut sayısını döndürür.

Parametreler

Parametre Zorunlu Açıklama
anyarray Evet İncelenecek dizi.

Örnek

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

ARRAY_DIMS

array_dims(anyarray) → TEXT

Bir dizinin boyut sınırlarını metin dizesi olarak döndürür; her boyutun alt ve üst sınırlarını gösterir.

Parametreler

Parametre Zorunlu Açıklama
anyarray Evet İncelenecek dizi.

Örnek

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

ARRAY_LENGTH

array_length(anyarray, int) → INT

Bir dizinin belirtilen boyutundaki öğe sayısını döndürür. Boyutlar 1'den başlayarak numaralandırılır.

Parametreler

Parametre Zorunlu Açıklama
anyarray Evet İncelenecek dizi.
int Evet Boyut numarası (1 tabanlı).

Örnek

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

ARRAY_LOWER

array_lower(anyarray, int) → INT

Belirtilen dizi boyutunun alt sınırını döndürür. Standart diziler için bu değer 1'dir. Özel alt sınırı olan dizilerde (örneğin '[0:2]={1,2,3}'::int[] gibi) gerçek alt sınır döndürülür. Boyutlar 1'den başlayarak numaralandırılır.

Parametreler

Parametre Zorunlu Açıklama
anyarray Evet İncelenecek dizi.
int Evet Boyut numarası (1 tabanlı).

Örnek

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

ARRAY_POSITIONS

array_positions(anyarray, anyelement) → ARRAY

Tek boyutlu bir dizide belirtilen bir öğenin alt simgelerini döndürür.

Parametreler

Parametre Zorunlu Açıklama
anyarray Evet Aranacak tek boyutlu dizi.
anyelement Evet Bulunacak öğe.

Örnek

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

ARRAY_PREPEND

array_prepend(anyelement, anyarray) → ARRAY

Bir öğeyi dizinin başına ekler.

Parametreler

Parametre Zorunlu Açıklama
anyelement Evet Başa eklenecek öğe.
anyarray Evet Kaynak dizi.

Örnek

-- Result: {1,2,3}
SELECT array_prepend(1, ARRAY[2,3]);

ARRAY_REMOVE

array_remove(anyarray, anyelement) → ARRAY

Tek boyutlu bir diziden belirtilen değere eşit olan tüm öğeleri kaldırır.

Parametreler

Parametre Zorunlu Açıklama
anyarray Evet İşlenecek tek boyutlu dizi.
anyelement Evet Kaldırılacak değer. Eşleşen tüm öğeler kaldırılır.

Örnek

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

ARRAY_SORT

array_sort(anyarray) → ARRAY

Bir dizinin öğelerini artan düzende sıralar.

Kullanım notları

Hologres sürümü Desteklenen dizi türleri
V1.1.46+ TEXT dizileri (sıralama için INT8'e dönüştürülür; sıralanmış TEXT dizisi döndürülür)
V1.3.18+ INT4, INT8, FLOAT4, FLOAT8, BOOLEAN ve TEXT dizileri. TEXT dizileri leksikografik sıraya göre sıralanır.

Parametreler

Parametre Zorunlu Açıklama
anyarray Evet Sıralanacak dizi.

Örnek

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

ARRAY_UPPER

array_upper(anyarray, int) → INT

Belirtilen dizi boyutunun üst sınırını döndürür. Standart tek boyutlu bir dizi için bu değer, öğe sayısına eşittir. Boyutlar 1'den başlayarak numaralandırılır.

Parametreler

Parametre Zorunlu Açıklama
anyarray Evet İncelenecek dizi.
int Evet Boyut numarası (1 tabanlı).

Örnek

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

UNNEST

unnest(anyarray) → setof TEXT

Bir dizinin her bir öğesini ayrı bir satıra genişletir. Bu işlevi FROM yan tümcesinde veya küme döndüren bir işlev olarak kullanın.

Parametreler

Parametre Zorunlu Açıklama
anyarray Evet Genişletilecek dizi.

Örnek

SELECT unnest(ARRAY[1,2]);

Sonuç:

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

ARRAY_MAX

array_max(array) → INT

Bir dizideki en büyük öğe değerini döndürür. Hesaplama sırasında NULL değerleri atlanır. Hologres V1.3.19 veya sonraki bir sürüm gerektirir.

array_max sabit sorguları desteklemez; girdi olarak bir tablo sütunu kullanın.

Parametreler

Parametre Zorunlu Açıklama
array Evet Değerlendirilecek dizi. NULL değerleri atlanır.

Örnek

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;

Sonuç:

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

ARRAY_MIN

array_min(array) → INT

Bir dizideki en küçük öğe değerini döndürür. Hologres V1.3.19 veya sonraki bir sürüm gerektirir.

array_min sabit sorguları desteklemez; girdi olarak bir tablo sütunu kullanın.

Parametreler

Parametre Zorunlu Açıklama
array Evet Değerlendirilecek dizi.

Örnek

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;

Sonuç:

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

ARRAY_CONTAINS

array_contains(array, target_value) → BOOLEAN

Bir dizinin belirtilen bir değeri içerip içermediğini denetler. Değer bulunursa true, bulunamazsa false döndürür. Hologres V1.3.19 veya sonraki bir sürüm gerektirir.

array_contains sabit sorguları desteklemez; girdi olarak bir tablo sütunu kullanın.

Parametreler

Parametre Zorunlu Açıklama
array Evet Aranacak dizi.
target_value Evet Aranan değer.

Örnek

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;

Sonuç:

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

ARRAY_EXCEPT

array_except(array1, array2) → ARRAY

array1 içinde bulunan ancak array2 içinde bulunmayan öğeleri döndürür. Hologres V1.3.19 veya sonraki bir sürüm gerektirir.

array_except sabit sorguları desteklemez; girdi olarak tablo sütunları kullanın.

Parametreler

Parametre Zorunlu Açıklama
array1 Evet Kaynak dizi.
array2 Evet array1 dışlanacak öğelerin bulunduğu dizi.

Örnek

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;

Sonuç:

                 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

Bir diziden yinelenen öğeleri kaldırır. Hologres V1.3.19 veya sonraki bir sürüm gerektirir.

array_distinct sabit sorguları desteklemez; girdi olarak bir tablo sütunu kullanın.

Parametreler

Parametre Zorunlu Açıklama
array Evet Yinelenenlerin kaldırılacağı dizi.

Örnek

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;

Sonuç:

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

ARRAY_UNION

array_union(array1, array2) → ARRAY

İki diziyi yeni bir dizide birleştirir ve yinelenen öğeleri kaldırır. Hologres V1.3.19 veya sonraki bir sürüm gerektirir.

array_union sabit sorguları desteklemez; girdi olarak tablo sütunları kullanın.

Parametreler

Parametre Zorunlu Açıklama
array1 Evet İlk dizi.
array2 Evet İkinci dizi. Birleştirildikten sonra her iki dizideki yinelenenler kaldırılır.

Örnek

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;

Sonuç:

      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) → ARRAY

Bir dizeyi düzenli ifadeyle eşleştirir ve yakalanan alt dizeleri içeren bir dizi döndürür.

Parametreler

Parametre Zorunlu Açıklama
str Evet Eşleştirilecek dize.
pattern Evet Düzenli ifade. Alt dizeleri ayıklamak için (...) yakalama gruplarını kullanın.

Örnek

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

Sonuç:

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

REGEXP_SPLIT_TO_ARRAY

regexp_split_to_array(str TEXT, pattern TEXT) → ARRAY

Bir dizeyi düzenli ifade ayırıcısına göre böler ve parçaları bir dizi olarak döndürür.

Parametreler

Parametre Zorunlu Açıklama
str Evet Bölünecek dize.
pattern Evet Bölme ayırıcısı olarak kullanılan düzenli ifade.

Örnek

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;

Sonuç:

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

Operatörler

Aşağıdaki operatörler dizilerle çalışır.

Operatör Dönüş Değeri Açıklama Örnek Sonuç
@> BOOLEAN Sol dizinin sağ dizideki tüm öğeleri içerip içermediğini denetler. SELECT ARRAY[1,2,3] @> ARRAY[1,2]; t
<@ BOOLEAN Sol dizinin sağ dizi tarafından kapsanıp kapsanmadığını denetler. SELECT ARRAY[1,2,3] <@ ARRAY[1,2]; f
&& BOOLEAN İki dizinin herhangi bir ortak öğe paylaşıp paylaşmadığını denetler. Hologres V1.3.37 ve sonraki sürümler, girdi olarak dizi sütunlarını da destekler. SELECT ARRAY[1,2,3] && ARRAY[1,2]; t

Yüksek düzey dizi işlevleri

Hologres V3.2 ve sonraki sürümler yüksek düzey dizi işlevlerini destekler. Daha fazla bilgi için bkz. LAMBDA expressions and related functions.