例
これらの例では、 ARRAY 定数 を使って配列を構築します。また、 ARRAY_CONSTRUCT 関数を使用して配列を構築することもできます。
この例では、単純な配列のスライスを示します。
SELECT ARRAY_SLICE([0,1,2,3,4,5,6], 0, 2);
+------------------------------------+
| ARRAY_SLICE([0,1,2,3,4,5,6], 0, 2) |
|------------------------------------|
| [ |
| 0, |
| 1 |
| ] |
+------------------------------------+
この例では、 ARRAY_SIZE 関数と ARRAY_SLICE 関数を使用して、配列を最後のインデックスまでスライスします。
SELECT ARRAY_SLICE([0,1,2,3,4,5,6], 3, ARRAY_SIZE([0,1,2,3,4,5,6])) AS slice_to_last_index;
+---------------------+
| SLICE_TO_LAST_INDEX |
|---------------------|
| [ |
| 3, |
| 4, |
| 5, |
| 6 |
| ] |
+---------------------+
インデックスは数値にする必要がありますが、配列の要素は数値にする必要はありません。
SELECT ARRAY_SLICE(['foo','snow','flake','bar'], 1, 3);
+-------------------------------------------------+
| ARRAY_SLICE(['FOO','SNOW','FLAKE','BAR'], 1, 3) |
|-------------------------------------------------|
| [ |
| "snow", |
| "flake" |
| ] |
+-------------------------------------------------+
この例では、入力配列として NULL を使用した場合の効果を示しています。
SELECT ARRAY_SLICE(NULL, 2, 3);
+-------------------------+
| ARRAY_SLICE(NULL, 2, 3) |
|-------------------------|
| NULL |
+-------------------------+
この例では、スライスインデックスの1つとして NULL を使用した効果を示しています。
SELECT ARRAY_SLICE([0,1,2,3,4,5,6], NULL, 2);
+---------------------------------------+
| ARRAY_SLICE([0,1,2,3,4,5,6], NULL, 2) |
|---------------------------------------|
| NULL |
+---------------------------------------+
この例では、負の数をインデックスとして使用した場合の効果を示しています。この数値は、配列の最後からのオフセットとして解釈されます。
SELECT ARRAY_SLICE([0,1,2,3,4,5,6], 0, -2);
+-------------------------------------+
| ARRAY_SLICE([0,1,2,3,4,5,6], 0, -2) |
|-------------------------------------|
| [ |
| 0, |
| 1, |
| 2, |
| 3, |
| 4 |
| ] |
+-------------------------------------+
この例では、両方のインデックスが負になる可能性があることを示しています(つまり、両方とも配列の末尾に相対的)。
SELECT ARRAY_SLICE([0,1,2,3,4,5,6], -5, -3);
+--------------------------------------+
| ARRAY_SLICE([0,1,2,3,4,5,6], -5, -3) |
|--------------------------------------|
| [ |
| 2, |
| 3 |
| ] |
+--------------------------------------+
この例では、両方のインデックスが配列の末尾を超えています。
SELECT ARRAY_SLICE([0,1,2,3,4,5,6], 10, 12);
+--------------------------------------+
| ARRAY_SLICE([0,1,2,3,4,5,6], 10, 12) |
|--------------------------------------|
| [] |
+--------------------------------------+
この例では、両方のインデックスが配列の開始前です。
SELECT ARRAY_SLICE([0,1,2,3,4,5,6], -10, -12);
+----------------------------------------+
| ARRAY_SLICE([0,1,2,3,4,5,6], -10, -12) |
|----------------------------------------|
| [] |
+----------------------------------------+