跳到主要内容

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真题

交流微信二维码

你可能还想看