配列コンストラクタは、新しい配列データ型を構築するために使用されます。OceanBaseデータベースが現在サポートしている配列コンストラクタにはarray()とrb_build()があり、サポートされている演算子には[]が含まれます。
array
array()関数は、配列データを構築するために使用されます。構文は以下のとおりです:
array(elem1, elem2, elem3, ..., elemN)
[elem1, elem2, elem3, ..., elemN]
elem1〜elmenN:入力パラメータは同一のデータ型である必要があります。現在サポートされている配列データ型については、配列データ型の概要を参照してください。
例:
SELECT array(1, 2, 3);
+----------------+
| array(1, 2, 3) |
+----------------+
| [1,2,3] |
+----------------+
1 row in set
rb_build
rb_build()関数は、整数型の基本データを効率的に圧縮されたビットマップデータ(RoaringBitmap)に変換するために使用されます。構文は以下のとおりです:
rb_build(arr)
入力パラメータの説明は以下のとおりです:
arr渡される型は配列型でなければなりません。
戻り値は、配列のすべての要素を含むRoaringBitmapです。
制約は以下のとおりです:
- 配列には空の要素を含めることはできません。
- ネストされた配列の場合、各サブ配列の基本要素を再帰的に取り出し、Roaringbitmapに挿入します。
- Roaringbitmapは、符号なし64ビット整数(uint64)と符号付き32ビット整数(int32)のデータの挿入をサポートしています。rb_from_stringの動作と一致しており、入力された符号付き32ビット整数の負の数は、まず符号なし32ビット整数に変換されてからRoaringBitmapに挿入されます。したがって、許容される整数の範囲は、符号付き32ビット整数の最小値から符号なし64ビット整数の最大値、すなわち
[INT32_MIN, UINT64_MAX]となります。
例:
SELECT rb_to_string(rb_build([1.2]));
ERROR 5083 (22000): Invalid data type for the operation
SELECT rb_to_string(rb_build([0,1,2]));
+---------------------------------+
| rb_to_string(rb_build([0,1,2])) |
+---------------------------------+
| 0,1,2 |
+---------------------------------+
1 row in set
SELECT rb_to_string(rb_build([[0,1],[2],[2,3]]));
+-------------------------------------------+
| rb_to_string(rb_build([[0,1],[2],[2,3]])) |
+-------------------------------------------+
| 0,1,2,3 |
+-------------------------------------------+
1 row in set
[]
演算子[]も配列データの構築を実現できます。例:
SELECT [1, 2, 3];
+-----------+
| [1, 2, 3] |
+-----------+
| [1,2,3] |
+-----------+
1 row in set