array_reverse_split
ARRAY<ARRAY<T>> array_reverse_split(ARRAY<T> arg, Array<Boolean> cond) ARRAY<ARRAY<T>> array_reverse_split(lambda, ARRAY<T0> arg0...)
ARRAY of equal length, the second of which is an Array<Boolean>, and split the arg according to the split point to the right of the position in the cond that is true.ARRAY arg0, split arg0 by the right-hand side of the true position in the cond of the Array<Boolean> result of the operation on the lambda expression.mysql> select array_reverse_split([1,2,3,4,5], [1,0,1,0,0]); +-------------------------------------------------------------------------------+ | array_reverse_split([1, 2, 3, 4, 5], cast([1, 0, 1, 0, 0] as ARRAY<BOOLEAN>)) | +-------------------------------------------------------------------------------+ | [[1], [2, 3], [4, 5]] | +-------------------------------------------------------------------------------+ 1 row in set (0.12 sec) mysql> select array_reverse_split((x,y)->y, [1,2,3,4,5], [1,0,0,0,0]); +------------------------------------------------------------------------------------------------------------------------+ | array_reverse_split([1, 2, 3, 4, 5], cast(array_map((x, y) -> y, [1, 2, 3, 4, 5], [1, 0, 0, 0, 0]) as ARRAY<BOOLEAN>)) | +------------------------------------------------------------------------------------------------------------------------+ | [[1], [2, 3, 4, 5]] | +------------------------------------------------------------------------------------------------------------------------+ 1 row in set (0.13 sec) mysql> select array_reverse_split((x,y)->(y+1), ['a', 'b', 'c', 'd'], [-1, -1, 0, -1]); +----------------------------------------------------------------------------------------------------------------------------------------+ | array_reverse_split(['a', 'b', 'c', 'd'], cast(array_map((x, y) -> (y + 1), ['a', 'b', 'c', 'd'], [-1, -1, 0, -1]) as ARRAY<BOOLEAN>)) | +----------------------------------------------------------------------------------------------------------------------------------------+ | [["a", "b", "c"], ["d"]] | +----------------------------------------------------------------------------------------------------------------------------------------+ 1 row in set (0.13 sec) mysql> select array_reverse_split(x->(year(x)>2013),["2020-12-12", "2013-12-12", "2015-12-12", null]); +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | array_reverse_split(['2020-12-12', '2013-12-12', '2015-12-12', NULL], array_map(x -> (year(cast(x as DATEV2)) > 2013), ['2020-12-12', '2013-12-12', '2015-12-12', NULL])) | +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | [["2020-12-12"], ["2013-12-12", "2015-12-12"], [null]] | +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 1 row in set (0.14 sec)
ARRAY, REVERSE, SPLIT, ARRAY_REVERSE_SPLIT