メインコンテンツまでスキップ
メインコンテンツまでスキップ

groupArrayInsertAt

指定された位置に値を配列に挿入します。

構文

groupArrayInsertAt(default_x, size)(x, pos)

1回のクエリで同じ位置に複数の値が挿入される場合、関数は以下のように動作します:

  • 1つのスレッドでクエリが実行された場合、挿入された値のうち最初のものが使用されます。
  • 複数のスレッドでクエリが実行された場合、結果の値は挿入された値のうちの不確定なものになります。

引数

  • x — 挿入する値。 Expressionサポートされているデータ型 の1つを返します。
  • pos — 指定された要素 x が挿入される位置。配列内のインデックス番号はゼロから始まります。 UInt32
  • default_x — 空の位置を代替するためのデフォルト値。オプションのパラメータ。 Expressionx パラメータに設定されたデータ型を返します。 default_x が定義されていない場合、デフォルト値が使用されます。
  • size — 結果の配列の長さ。オプションのパラメータ。このパラメータを使用する場合、デフォルト値 default_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']                                             │
└───────────────────────────────────────────────────────────────────┘

1つの位置へのマルチスレッド挿入。

クエリ:

SELECT groupArrayInsertAt(number, 0) FROM numbers_mt(10) SETTINGS max_block_size = 1;

このクエリの結果として、範囲 [0,9] のランダムな整数が得られます。例えば:

┌─groupArrayInsertAt(number, 0)─┐
│ [7]                           │
└───────────────────────────────┘