全部产品
Search
文档中心

AnalyticDB:Array

更新时间:Jun 26, 2025

AnalyticDB for MySQL versi 3.1.1 dan yang lebih baru mendukung tipe ARRAY dan MAP. Topik ini menjelaskan definisi, peringatan, serta contoh penggunaan tipe ARRAY.

Definisi

Array digunakan untuk menyimpan data dan mendukung elemen duplikat, mirip dengan daftar di Java. Semua elemen dalam array memiliki tipe data yang sama. Sebagai contoh, jika array<int> didefinisikan untuk Kolom A, maka semua elemen anak di Kolom A bertipe INT. Array juga mendukung struktur bersarang, seperti array<array<string>>.

Peringatan

Indeks tidak dapat dibuat untuk kolom dengan tipe ARRAY atau MAP. Disarankan untuk menggabungkan kondisi pencarian dengan pernyataan SQL guna memfilter data, alih-alih memfilter data secara langsung. Hal ini membantu mengurangi jumlah data yang harus dipindai.

Contoh

  • Buat tabel

    • Create Table `array_test` (
       `a` int,
       `b` array<int>,
       `c` array<array<string>>,
       primary key (`a`)
      ) DISTRIBUTED BY HASH(`a`)
  • Tulis data

    • Sebagai contoh, Anda dapat menyisipkan satu baris data dengan b disetel ke [1,2,3] dan c disetel ke [["a"],["b","c"]].

      insert into array_test values (1, '[1,2,3]', '[["a"],["b","c"]]');
  • Kueri data

    • mysql> select * from array_test;
      +------+---------+-------------------+
      | a    | b       | c                 |
      +------+---------+-------------------+
      |    1 | [1,2,3] | [["a"],["b","c"]] |
      +------+---------+-------------------+
      1 row in set (0,08 sec)
      Penting
      • Subskrip array dimulai dari 1, bukan 0.

      • Anda dapat menggunakan b[1] untuk mendapatkan alamat data dalam array, yang setara dengan fungsi element_at(b, 1).

      mysql> select a,b[1],element_at(b,1),c[2],element_at(c,2) from array_test;
      +------+------+-----------------+-----------+-----------------+
      | a    | b[1] | element_at(b,1) | c[2]      | element_at(c,2) |
      +------+------+-----------------+-----------+-----------------+
      |    1 |    1 |               1 | ["b","c"] | ["b","c"]       |
      +------+------+-----------------+-----------+-----------------+
      1 row in set (0,11 sec)

      Kolom dengan tipe ARRAY atau MAP dikembalikan dalam hasil kueri dalam format JSON. Sebagai contoh, jika c[2] sesuai dengan subkolom bersarang dengan tipe array<string>, subkolom tersebut akan dikembalikan dalam format JSON.

Fungsi yang didukung

Fungsi

Deskripsi

Tipe pengembalian

element_at

Mengembalikan nilai. Subskrip dimulai dari 1. Contoh: element_at(array[1,2], 1) ==> 1.

T

size

Mengembalikan jumlah elemen.

int

contains

Menentukan apakah array berisi elemen anak. Contoh: contains(array[1,2], 2) ==> 1.

BOOL

array_max

Mengembalikan elemen anak maksimum dalam array.

T

array_min

Mengembalikan elemen anak minimum dalam array.

T

array_position

Mengembalikan indeks kemunculan pertama suatu elemen dalam array. Contoh: array_position(array['a','b','b'],'b') ==>2.

int

array_remove

Menghapus semua elemen anak yang sama dengan nilai tertentu dari array. Contoh: array_remove(array['a','b','b'],'b')==>['a'].

array<T>

array_sort

Mengurutkan array. Contoh: array_sort(array[3,2,1]) ==> [1,2,3].

array<T>

reverse

Membalik urutan elemen anak dalam array. Contoh: reverse(array[5,9,3]) ==>[3,9,5].

array<T>

shuffle

Mengacak urutan elemen dalam array. Contoh: shuffle(array[1,5,8])==> [5,1,8].

array<T>

slice

Mengekstrak elemen anak terpilih dari array. Contoh: array slice(array[1,2,3,4,5], 3,2) ==> [3,4].

array<T>

concat

Menggabungkan elemen anak dari dua atau lebih array tanpa menghapus duplikat. Contoh: concat(array[1], array[1,2]) ==>[1,1,2].

array<T>

array_distinct

Menghapus elemen anak duplikat dari array. Contoh: array_distinct(array[1,1,2]) ==>[1,2].

array<T>

array_union

Menggabungkan elemen anak dari dua atau lebih array tanpa duplikat. Contoh: array_union(array[1], array[1,2])==>[1,2].

array<T>

array_intersect

Membandingkan elemen dari dua atau lebih array dan mengembalikan kecocokan. Contoh: array_intersect(array[1], array[1,2]) ==>[1].

array<T>

array_join

Menggabungkan elemen dalam array menggunakan pemisah yang diberikan, mirip dengan Joiner. Contoh: array_join(array[1,2,3,4],'a') ==>1a2a3a4.

string

flatten

Meratakan array bersarang menjadi array tunggal. Contoh: flatten(array[array[1,2],array[3]])==>[1,2,3].

array<X>