array_sortby

array_reverse_split

description

Syntax

  1. ARRAY<ARRAY<T>> array_reverse_split(ARRAY<T> arg, Array<Boolean> cond)
  2. ARRAY<ARRAY<T>> array_reverse_split(lambda, ARRAY<T0> arg0...)
  1. 传入两个长度相等的 ARRAY 且第二个为 Array<Boolean>,按照 cond 中为 true 的位置右侧作为分割点,分割 arg
  2. 高阶函数,传入一个 lambda 表达式和至少一个 ARRAY arg0,则按照 lambda 表达式运算得到的 Array<Boolean> 结果,其中为 true 的位置右侧作为分割点,分割 arg0

example

  1. mysql> select array_reverse_split([1,2,3,4,5], [1,0,1,0,0]);
  2. +-------------------------------------------------------------------------------+
  3. | array_reverse_split([1, 2, 3, 4, 5], cast([1, 0, 1, 0, 0] as ARRAY<BOOLEAN>)) |
  4. +-------------------------------------------------------------------------------+
  5. | [[1], [2, 3], [4, 5]] |
  6. +-------------------------------------------------------------------------------+
  7. 1 row in set (0.12 sec)
  8. mysql> select array_reverse_split((x,y)->y, [1,2,3,4,5], [1,0,0,0,0]);
  9. +------------------------------------------------------------------------------------------------------------------------+
  10. | 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>)) |
  11. +------------------------------------------------------------------------------------------------------------------------+
  12. | [[1], [2, 3, 4, 5]] |
  13. +------------------------------------------------------------------------------------------------------------------------+
  14. 1 row in set (0.13 sec)
  15. mysql> select array_reverse_split((x,y)->(y+1), ['a', 'b', 'c', 'd'], [-1, -1, 0, -1]);
  16. +----------------------------------------------------------------------------------------------------------------------------------------+
  17. | 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>)) |
  18. +----------------------------------------------------------------------------------------------------------------------------------------+
  19. | [["a", "b", "c"], ["d"]] |
  20. +----------------------------------------------------------------------------------------------------------------------------------------+
  21. 1 row in set (0.13 sec)
  22. mysql> select array_reverse_split(x->(year(x)>2013),["2020-12-12", "2013-12-12", "2015-12-12", null]);
  23. +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  24. | 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])) |
  25. +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  26. | [["2020-12-12"], ["2013-12-12", "2015-12-12"], [null]] |
  27. +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  28. 1 row in set (0.14 sec)

keywords

ARRAY, REVERSE, SPLIT, ARRAY_REVERSE_SPLIT