- Categorias:
Funções de dados semiestruturados e estruturados (Matriz/objeto)
ARRAY_SIZE¶
Retorna o tamanho da matriz de entrada.
Uma variação de ARRAY_SIZE toma um valor VARIANT como entrada. Se o valor VARIANT contiver uma matriz, o tamanho da matriz será retornado; caso contrário, NULL será retornado se o valor não for uma matriz.
Sintaxe¶
ARRAY_SIZE( <array> )
ARRAY_SIZE( <variant> )
Retornos¶
O tipo de dados do valor retornado é INTEGER
.
Notas de uso¶
Obtém um valor ARRAY como entrada e retorna o tamanho da matriz (ou seja, o maior índice + 1).
Se a matriz for uma matriz esparsa, isto significa que o tamanho inclui os elementos indefinidos, bem como os elementos definidos.
Um argumento NULL retorna NULL como resultado.
Exemplos¶
Aqui está um exemplo simples:
SELECT ARRAY_SIZE(ARRAY_CONSTRUCT(1, 2, 3)) AS SIZE; +------+ | SIZE | |------| | 3 | +------+
Aqui está um exemplo um pouco mais complexo, desta vez usando o tipo de dados 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;Recuperar o tamanho de cada matriz na coluna VARIANT:
SELECT ARRAY_SIZE(v) from colors; +---------------+ | ARRAY_SIZE(V) | |---------------| | 3 | | 6 | +---------------+Recuperar o último elemento de cada matriz na coluna 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 | | } | +-------------------------+