array_sort 函数

适用于:Databricks SQL check marked yes Databricks Runtime

返回根据 func 排序的 array

语法

array_sort(array, func)

参数

  • array:计算结果为数组的表达式。
  • func:用于定义排序顺序的 lambda 函数。

返回

结果类型与 array 的类型匹配。

如果省略 func,则数组按升序排序。

如果提供 func,则采用两个参数(代表数组的两个元素)。

该函数必须返回 -1、0 或 1,具体取决于第一个元素是小于、等于还是大于第二个元素。

如果 func 返回其他值(包括 NULL),array_sort 将会失败并引发错误。

NULL 元素放在返回的数组的末尾。

示例

> SELECT array_sort(array(5, 6, 1),
                   (left, right) -> CASE WHEN left < right THEN -1
                                         WHEN left > right THEN 1 ELSE 0 END);
 [1,5,6]
> SELECT array_sort(array('bc', 'ab', 'dc'),
                    (left, right) -> CASE WHEN left IS NULL and right IS NULL THEN 0
                                          WHEN left IS NULL THEN -1
                                          WHEN right IS NULL THEN 1
                                          WHEN left < right THEN 1
                                          WHEN left > right THEN -1 ELSE 0 END);
 [dc,bc,ab]
> SELECT array_sort(array('b', 'd', null, 'c', 'a'));
 [a,b,c,d,NULL]