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