メインコンテンツまでスキップ
バージョン: 4.x

ARRAY_FIRST_INDEX

説明

lambda式を入力パラメータとして使用し、他の入力ARRAY パラメータの内部データに対して対応する式計算を実行します。lambda(array1[i], ...)の戻り値が0でない最初のインデックスを返します。そのようなインデックスが見つからない場合は0を返します。

lambda式には1つ以上のパラメータが入力され、すべての入力配列の要素数は同じである必要があります。lambdaでは有効なスカラー関数を実行できますが、集約関数などはサポートされていません。

構文

ARRAY_FIRST_INDEX(<lambda>, <arr> [, ...])

パラメータ

パラメータ説明
<lambda>入力パラメータが指定された配列の列数と一致する必要があるラムダ式。この式は有効なスカラー関数を実行できますが、集約関数はサポートしていません。
<arr>ARRAY配列

戻り値

最初の非ゼロ値のインデックスを返します。該当するインデックスが見つからない場合は、0を返します。

select array_first_index(x->x+1>3, [2, 3, 4]);
+-------------------------------------------------------------------+
| array_first_index(array_map([x] -> x(0) + 1 > 3, ARRAY(2, 3, 4))) |
+-------------------------------------------------------------------+
| 2 |
+-------------------------------------------------------------------+
select array_first_index(x -> x is null, [null, 1, 2]);
+----------------------------------------------------------------------+
| array_first_index(array_map([x] -> x(0) IS NULL, ARRAY(NULL, 1, 2))) |
+----------------------------------------------------------------------+
| 1 |
+----------------------------------------------------------------------+
select array_first_index(x->power(x,2)>10, [1, 2, 3, 4]);
+---------------------------------------------------------------------------------+
| array_first_index(array_map([x] -> power(x(0), 2.0) > 10.0, ARRAY(1, 2, 3, 4))) |
+---------------------------------------------------------------------------------+
| 4 |
+---------------------------------------------------------------------------------+
select col2, col3, array_first_index((x,y)->x>y, col2, col3) from array_test;
+--------------+--------------+---------------------------------------------------------------------+
| col2 | col3 | array_first_index(array_map([x, y] -> x(0) > y(1), `col2`, `col3`)) |
+--------------+--------------+---------------------------------------------------------------------+
| [1, 2, 3] | [3, 4, 5] | 0 |
| [1, NULL, 2] | [NULL, 3, 1] | 3 |
| [1, 2, 3] | [9, 8, 7] | 0 |
| NULL | NULL | 0 |
+--------------+--------------+---------------------------------------------------------------------+