groupArrayInsertAt
引入版本:v1.1.0
将一个值插入数组中的指定位置。
如果在一次查询中有多个值被插入到同一位置,则该函数的行为如下:
- 如果查询在单个线程中执行,则使用第一个插入的值。
- 如果查询在多个线程中执行,则结果值是这些插入值中的某个不确定值。
语法
groupArrayInsertAt(default_x, size)([x, pos])参数
Arguments
返回值
返回插入了值的数组。Array
示例
不使用参数的基本用法
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;┌─groupArrayInsertAt(number, 0)─┐
│ [0] │
└───────────────────────────────┘