跳转到主要内容

groupArrayInsertAt

引入版本:v1.1.0 将一个值插入数组中的指定位置。 如果在一次查询中有多个值被插入到同一位置,则该函数的行为如下:
  • 如果查询在单个线程中执行,则使用第一个插入的值。
  • 如果查询在多个线程中执行,则结果值是这些插入值中的某个不确定值。
语法
groupArrayInsertAt(default_x, size)([x, pos])
参数
  • default_x — 可选。用于填补空缺位置的默认值。Any
  • size — 可选。结果数组的长度。使用此参数时,必须指定默认值 default_xUInt32
Arguments
  • x — 要插入的值。Any
  • pos — 插入指定元素 x 的位置。数组索引从零开始编号。UInt32
返回值 返回插入了值的数组。Array 示例 不使用参数的基本用法
Query
SELECT groupArrayInsertAt(toString(number), number * 2) FROM numbers(5);
Response
┌─groupArrayInsertAt(toString(number), multiply(number, 2))─┐
│ ['0','','1','','2','','3','','4']                         │
└───────────────────────────────────────────────────────────┘
带默认值参数的用法
Query
SELECT groupArrayInsertAt('-')(toString(number), number * 2) FROM numbers(5);
Response
┌─groupArrayInsertAt('-')(toString(number), multiply(number, 2))─┐
│ ['0','-','1','-','2','-','3','-','4']                          │
└────────────────────────────────────────────────────────────────┘
带默认值和大小参数的用法
Query
SELECT groupArrayInsertAt('-', 5)(toString(number), number * 2) FROM numbers(5);
Response
┌─groupArrayInsertAt('-', 5)(toString(number), multiply(number, 2))─┐
│ ['0','-','1','-','2']                                             │
└───────────────────────────────────────────────────────────────────┘
在同一位置进行多线程插入
Query
SELECT groupArrayInsertAt(number, 0) FROM numbers_mt(10) SETTINGS max_block_size = 1;
Response
┌─groupArrayInsertAt(number, 0)─┐
│ [7]                           │
└───────────────────────────────┘
最后修改于 2026年6月10日