数组函数
本节提供 TiDB Cloud Lake 中数组函数的参考信息。数组函数支持创建、操作、搜索和转换数组数据结构。
数组创建与构造
| 函数 | 描述 | 示例 |
|---|
| ARRAY | 从表达式构建数组 | ARRAY(1, 2, 3) → [1,2,3] |
| ARRAY_CONSTRUCT | 从单个值创建数组 | ARRAY_CONSTRUCT(1, 2, 3) → [1,2,3] |
| RANGE | 生成顺序数字组成的数组 | RANGE(1, 5) → [1,2,3,4] |
| ARRAY_GENERATE_RANGE | 生成可选步长的序列 | ARRAY_GENERATE_RANGE(0, 6, 2) → [0,2,4] |
| 函数 | 描述 | 示例 |
|---|
| GET | 按索引从数组中获取元素 | GET([1,2,3], 1) → 1 |
| ARRAY_GET | GET 函数的别名 | ARRAY_GET([1,2,3], 1) → 1 |
| CONTAINS | 检查数组是否包含指定值 | CONTAINS([1,2,3], 2) → true |
| ARRAY_CONTAINS | 检查数组是否包含指定值 | ARRAY_CONTAINS([1,2,3], 2) → true |
| ARRAY_SIZE | 返回数组长度(别名:ARRAY_LENGTH) | ARRAY_SIZE([1,2,3]) → 3 |
| ARRAY_COUNT | 统计非 NULL 条目数量 | ARRAY_COUNT([1,NULL,2]) → 2 |
| ARRAY_ANY | 返回第一个非 NULL 值 | ARRAY_ANY([NULL,'a','b']) → 'a' |
数组修改
| 函数 | 描述 | 示例 |
|---|
| ARRAY_APPEND | 在数组末尾追加元素 | ARRAY_APPEND([1,2], 3) → [1,2,3] |
| ARRAY_PREPEND | 在数组开头前置元素 | ARRAY_PREPEND(0, [1,2]) → [0,1,2] |
| ARRAY_INSERT | 在指定位置插入元素 | ARRAY_INSERT([1,3], 1, 2) → [1,2,3] |
| ARRAY_REMOVE | 删除指定元素的所有出现项 | ARRAY_REMOVE([1,2,2,3], 2) → [1,3] |
| ARRAY_REMOVE_FIRST | 删除数组中的第一个元素 | ARRAY_REMOVE_FIRST([1,2,3]) → [2,3] |
| ARRAY_REMOVE_LAST | 删除数组中的最后一个元素 | ARRAY_REMOVE_LAST([1,2,3]) → [1,2] |
数组组合与操作
| 函数 | 描述 | 示例 |
|---|
| ARRAY_CONCAT | 连接多个数组 | ARRAY_CONCAT([1,2], [3,4]) → [1,2,3,4] |
| ARRAY_SLICE | 提取数组的一部分 | ARRAY_SLICE([1,2,3,4], 1, 2) → [1,2] |
| SLICE | ARRAY_SLICE 函数的别名 | SLICE([1,2,3,4], 1, 2) → [1,2] |
| ARRAYS_ZIP | 按元素位置组合多个数组 | ARRAYS_ZIP([1,2], ['a','b']) → [(1,'a'),(2,'b')] |
| ARRAY_SORT | 对值进行排序;不同变体可控制顺序和空值 | ARRAY_SORT([3,1,2]) → [1,2,3] |
数组集合操作
| 函数 | 描述 | 示例 |
|---|
| ARRAY_DISTINCT | 返回数组中的唯一元素 | ARRAY_DISTINCT([1,2,2,3]) → [1,2,3] |
| ARRAY_UNIQUE | ARRAY_DISTINCT 函数的别名 | ARRAY_UNIQUE([1,2,2,3]) → [1,2,3] |
| ARRAY_INTERSECTION | 返回数组之间的公共元素 | ARRAY_INTERSECTION([1,2,3], [2,3,4]) → [2,3] |
| ARRAY_EXCEPT | 返回第一个数组中存在但第二个数组中不存在的元素 | ARRAY_EXCEPT([1,2,3], [2,4]) → [1,3] |
| ARRAY_OVERLAP | 检查数组是否有公共元素 | ARRAY_OVERLAP([1,2,3], [3,4,5]) → true |
| 函数 | 描述 | 示例 |
|---|
| ARRAY_TRANSFORM | 对每个数组元素应用函数 | ARRAY_TRANSFORM([1,2,3], x -> x * 2) → [2,4,6] |
| ARRAY_FILTER | 根据条件过滤数组元素 | ARRAY_FILTER([1,2,3,4], x -> x > 2) → [3,4] |
| ARRAY_REDUCE | 使用聚合将数组归约为单个值 | ARRAY_REDUCE([1,2,3], 0, (acc,x) -> acc + x) → 6 |
| ARRAY_AGGREGATE | 使用函数聚合数组元素 | ARRAY_AGGREGATE([1,2,3], 'sum') → 6 |
数组聚合与统计
| 函数 | 描述 | 示例 |
|---|
| ARRAY_SUM | 数值之和 | ARRAY_SUM([1,2,3]) → 6 |
| ARRAY_AVG | 数值平均值 | ARRAY_AVG([1,2,3]) → 2 |
| ARRAY_MEDIAN | 数值中位数 | ARRAY_MEDIAN([1,3,2]) → 2 |
| ARRAY_MIN | 最小值 | ARRAY_MIN([3,1,2]) → 1 |
| ARRAY_MAX | 最大值 | ARRAY_MAX([3,1,2]) → 3 |
| ARRAY_STDDEV_POP | 总体标准差(别名:ARRAY_STD) | ARRAY_STDDEV_POP([1,2,3]) |
| ARRAY_STDDEV_SAMP | 样本标准差(别名:ARRAY_STDDEV) | ARRAY_STDDEV_SAMP([1,2,3]) |
| ARRAY_KURTOSIS | 值的超额峰度 | ARRAY_KURTOSIS([1,2,3,4]) |
| ARRAY_SKEWNESS | 值的偏度 | ARRAY_SKEWNESS([1,2,3,4]) |
| ARRAY_APPROX_COUNT_DISTINCT | 近似去重计数 | ARRAY_APPROX_COUNT_DISTINCT([1,1,2]) → 2 |
数组实用函数
| 函数 | 描述 | 示例 |
|---|
| ARRAY_COMPACT | 从数组中移除空值 | ARRAY_COMPACT([1,null,2,null,3]) → [1,2,3] |
| ARRAY_FLATTEN | 将嵌套数组展平为单个数组 | ARRAY_FLATTEN([[1,2],[3,4]]) → [1,2,3,4] |
| ARRAY_REVERSE | 反转数组元素的顺序 | ARRAY_REVERSE([1,2,3]) → [3,2,1] |
| ARRAY_INDEXOF | 返回元素首次出现的索引 | ARRAY_INDEXOF([1,2,3,2], 2) → 1 |
| UNNEST | 将数组展开为单独的行 | UNNEST([1,2,3]) → 1, 2, 3(作为单独的行) |