groupArrayInsertAt
在指定位置将值插入到数组中。
语法
groupArrayInsertAt(default_x, size)(x, pos)
如果在一次查询中将多个值插入到同一位置,则该函数的行为方式如下:
- 如果查询在单线程中执行,则使用插入值中的第一个值。
- 如果查询在多线程中执行,则结果值是插入值中不确定的一个。
参数
x
— 要插入的值。 表达式,结果为支持的数据类型之一。pos
— 要在其中插入指定元素x
的位置。数组中的索引编号从零开始。 UInt32。default_x
— 用于替换空位置的默认值。可选参数。 表达式,结果为为x
参数配置的数据类型。如果未定义default_x
,则使用默认值。size
— 结果数组的长度。可选参数。使用此参数时,必须指定默认值default_x
。UInt32。
返回值
- 包含插入值的数组。
类型: 数组。
示例
查询
SELECT groupArrayInsertAt(toString(number), number * 2) FROM numbers(5);
结果
┌─groupArrayInsertAt(toString(number), multiply(number, 2))─┐
│ ['0','','1','','2','','3','','4'] │
└───────────────────────────────────────────────────────────┘
查询
SELECT groupArrayInsertAt('-')(toString(number), number * 2) FROM numbers(5);
结果
┌─groupArrayInsertAt('-')(toString(number), multiply(number, 2))─┐
│ ['0','-','1','-','2','-','3','-','4'] │
└────────────────────────────────────────────────────────────────┘
查询
SELECT groupArrayInsertAt('-', 5)(toString(number), number * 2) FROM numbers(5);
结果
┌─groupArrayInsertAt('-', 5)(toString(number), multiply(number, 2))─┐
│ ['0','-','1','-','2'] │
└───────────────────────────────────────────────────────────────────┘
将元素多线程插入到一个位置。
查询
SELECT groupArrayInsertAt(number, 0) FROM numbers_mt(10) SETTINGS max_block_size = 1;
作为此查询的结果,您将获得 [0,9]
范围内的随机整数。例如:
┌─groupArrayInsertAt(number, 0)─┐
│ [7] │
└───────────────────────────────┘