Kategorien:

Funktionen für semistrukturierte und strukturierte Daten (Array/Objekt)

ARRAY_SIZE

Gibt die Größe des Eingabearrays zurück.

Eine Variante von ARRAY_SIZE nutzt einen VARIANT-Wert als Eingabe. Wenn der VARIANT-Wert ein Array enthält, wird die Größe des Arrays zurückgegeben; andernfalls wird NULL zurückgegeben, wenn der Wert kein Array ist.

Syntax

ARRAY_SIZE( <array> )

ARRAY_SIZE( <variant> )
Copy

Rückgabewerte

Der Datentyp des zurückgegebenen Werts ist INTEGER.

Nutzungshinweise

  • Nutzt einen ARRAY-Wert als Eingabe und gibt die Größe des Arrays zurück (d. h. den größten Index + 1).

    Wenn das Array ein dünnbesetztes Array ist, bedeutet dies, dass die Größenangabe sowohl die undefinierten als auch die definierten Elemente berücksichtigt.

  • Ein NULL-Argument gibt als Ergebnis NULL zurück.

Beispiele

Hier ist ein einfaches Beispiel:

SELECT ARRAY_SIZE(ARRAY_CONSTRUCT(1, 2, 3)) AS SIZE;
+------+
| SIZE |
|------|
|    3 |
+------+
Copy

Hier ist ein etwas komplexeres Beispiel, dieses Mal mit dem Datentyp VARIANT:

CREATE OR replace TABLE colors (v variant);

INSERT INTO
   colors
   SELECT
      parse_json(column1) AS v
   FROM
   VALUES
     ('[{r:255,g:12,b:0},{r:0,g:255,b:0},{r:0,g:0,b:255}]'),
     ('[{r:255,g:128,b:0},{r:128,g:255,b:0},{r:0,g:255,b:128},{r:0,g:128,b:255},{r:128,g:0,b:255},{r:255,g:0,b:128}]')
    v;
Copy

Abrufen der Größe für jedes Array in der Spalte VARIANT:

SELECT ARRAY_SIZE(v) from colors;
+---------------+
| ARRAY_SIZE(V) |
|---------------|
|             3 |
|             6 |
+---------------+
Copy

Abrufen des letzten Elements für jedes Array in der Spalte VARIANT:

SELECT GET(v, ARRAY_SIZE(v)-1) FROM colors;
+-------------------------+
| GET(V, ARRAY_SIZE(V)-1) |
|-------------------------|
| {                       |
|   "b": 255,             |
|   "g": 0,               |
|   "r": 0                |
| }                       |
| {                       |
|   "b": 128,             |
|   "g": 0,               |
|   "r": 255              |
| }                       |
+-------------------------+
Copy