array_sort
按升序对数组元素进行排序。从 v4.0 开始,array_sort 支持 Lambda Comparator。
语法
-- 不使用 Lambda Comparator
array_sort(array)
-- 使用 Lambda Comparator
array_sort(array, (x,y)->expr(x,y))
参数
array:要排序的数组元素。仅支持 ARRAY 数据类型。
lambda_comparator:一个可选的 lambda 函数比较器,格式为 (x,y)->expr(x,y)。lambda Comparator 必须满足以下条件:
- 必须只依赖于参数 x 和 y
- 必须返回布尔或数字类型
- 结果不应为 NULL
- 必须满足严格弱序要求
返回值
返回一个数组。
使用说明
基本排序
- 当不使用 lambda Comparator 时,此函数按升序对数组元素进行排序。
NULL值放置在返回数组的开头。- 返回数组的元素与输入数组的元素具有相同的数据类型。
Lambda Comparator 排序
-
使用 lambda Comparator 时,排序顺序由表达式结果决定:
- 对于布尔返回值:
true表示 x 应在 y 之前 - 对于数字返回值:负数表示 x 在 y 之前
- 对于布尔返回值:
-
lambda Comparator 必须满足严格弱序要求:
- 非自反性: 对于所有
x,expr(x, x)必须返回 false(布尔)或非负数(数字) - 不对称性: 如果
expr(x, y)成立,则expr(y, x)不得成立 - 传递性: 如果
expr(x, y)和expr(y, z)成立,则expr(x, z)必须成立 - 连通性: 对于所有
x和y,以下之一必须为真:expr(x, y)expr(y, x)x = y
- 非自反性: 对于所有
-
lambda Comparator 表达式必须:
- 只依赖于参数
x和y - 返回布尔或数字类型
- 从不返回 NULL
- 始终为相同的输入值生成一致的结果
- 只依赖于参数
降序
如果要按降序对数组元素进行排序,请使用 reverse 函数。