ClickHouse/docs/zh/sql-reference/aggregate-functions/reference/grouparrayinsertat.md
2021-03-25 17:09:19 +08:00

3.2 KiB

toc_priority
112

groupArrayInsertAt

在指定位置向数组中插入一个值。

语法

groupArrayInsertAt(default_x, size)(x, pos);

如果在一个查询中将多个值插入到同一位置,则该函数的行为方式如下:

  • 如果在单个线程中执行查询,则使用第一个插入的值。
  • 如果在多个线程中执行查询,则结果值是未确定的插入值之一。

参数

  • x — 要插入的值。生成所支持的数据类型(数据)的表达式
  • pos — 指定元素 x 将被插入的位置。 数组中的索引编号从零开始。 UInt32.
  • default_x — 在空位置替换的默认值。可选参数。生成 x 数据类型 (数据) 的表达式。 如果 default_x 未定义,则 默认值 被使用。
  • size— 结果数组的长度。可选参数。如果使用该参数,必须指定默认值 default_xUInt32

返回值

  • 具有插入值的数组。

类型: 阵列

示例

查询:

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]                           │
└───────────────────────────────┘