Перейти к основному содержанию

groupArrayInsertAt

Добавленный в: v1.1.0 Вставляет значение в массив в указанную позицию. Если в одном запросе в одну и ту же позицию вставляется несколько значений, функция ведет себя следующим образом:
  • Если запрос выполняется в одном потоке, используется первое из вставленных значений.
  • Если запрос выполняется в нескольких потоках, результирующим значением будет одно из вставленных значений, выбранное неопределённым образом.
Синтаксис
groupArrayInsertAt(default_x, size)([x, pos])
Параметры
  • default_x — Необязательно. Значение по умолчанию для подстановки в пустых позициях. Any
  • size — Необязательно. Длина результирующего массива. При использовании этого параметра необходимо указать значение по умолчанию default_x. UInt32
Аргументы
  • 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]                           │
└───────────────────────────────┘
Последнее изменение 10 июня 2026 г.