类别:

半结构化和结构化数据函数 (数组/对象)

ARRAY_SIZE

返回输入数组的大小。

ARRAY_SIZE 变体将 VARIANT 值作为输入。如果 VARIANT 值包含数组,则返回数组的大小;否则,如果该值不是数组,则返回 NULL。

语法

ARRAY_SIZE( <array> )

ARRAY_SIZE( <variant> )
Copy

返回

返回值的数据类型是 INTEGER

使用说明

  • 将一个 ARRAY 值作为输入并返回数组的大小(即最大索引 + 1)。

    如果数组是 稀疏 数组,则意味着大小包括未定义的元素和已定义的元素。

  • NULL 实参返回 NULL 作为结果。

示例

下面是一个简单的示例:

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

下面是一个稍微复杂一点的示例,这次使用 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

检索 VARIANT 列中每个数组的大小:

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

检索 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
语言: 中文