array_insert:按位置插入元素
速查结论
array_insert(x, pos, val) 是 Spark SQL 中用于在数组的指定位置插入一个元素的函数。
语法
array_insert(x, pos, val)
参数说明
| 参数 | 说明 |
|---|---|
x | 目标数组 |
pos | 插入位置的索引(从1开始)。支持负数:-1 表示末尾追加;负数超出范围时会在开头补 NULL |
val | 要插入的值 |
示例
> SELECT array_insert(array(1, 2, 3, 4), 5, 5);
[1,2,3,4,5]
> SELECT array_insert(array(5, 4, 3, 2), -1, 1);
[5,4,3,2,1]
> SELECT array_insert(array(5, 3, 2, 1), -4, 4);
[5,4,3,2,1]
常见报错与避坑指南
- 索引从1开始:与很多编程语言不同,array_insert 的 pos 索引从 1 开始计数,不要误用 0 作为第一个位置。
- 正索引超出范围:当 pos 为正且大于数组长度时,元素会被追加到数组末尾,而不会抛错。
- 负索引超出范围:当 pos 为负且其绝对值大于数组长度时,会在数组开头用 NULL 补齐后插入。例如
array_insert(array(1,2), -5, 3)返回[3,null,null,null,1,2]。
Since: 3.4.0
📱关注公众号
「数据仓库技术」文章同步更新,不错过每一篇干货

💬加群交流
备注「数据仓库技术」加入社群,每日一道大厂SQL真题
