类别:

半结构化和结构化数据函数 (数组/对象)

ARRAY_MAX

给定一个输入 ARRAY,返回具有最高值的元素,该元素不是 SQL NULL。如果输入 ARRAY 为空或仅包含 SQL NULL 元素,则此函数返回 NULL。

语法

ARRAY_MAX( <array> )
Copy

实参

array

输入 ARRAY。

返回

此函数返回一个 VARIANT,其中包含具有最高值的元素,该元素不是 SQL NULL。

如果 array 为 NULL、空或仅包含 SQL NULL 元素,则该函数返回 NULL。

使用说明

  • SQL NULL 不同于半结构化数据中的显式 NULL 值(例如,JSON 数据中的 JSON NULL)。在标识具有最高值的元素时,会考虑显式 NULL 值。

  • 该函数通过比较数组中的元素来确定要返回的元素。该函数支持比较相同数据类型或以下数据类型的元素:

    • NUMBER 和 FLOAT 数据类型的元素。

    • TIMESTAMP_LTZ 和 TIMESTAMP_TZ 数据类型的元素。

    如果数组包含其他数据类型的元素,则将这些元素 转换 为常见的数据类型,如下例所示。

示例

下面的示例返回一个 VARIANT,其中包含 ARRAY 常量 中具有最高值的元素:

SELECT ARRAY_MAX([20, 0, NULL, 10, NULL]);
Copy
+------------------------------------+
| ARRAY_MAX([20, 0, NULL, 10, NULL]) |
|------------------------------------|
| 20                                 |
+------------------------------------+

下面的示例展示了 JSON NULL 的处理不同于 SQL NULL。如果 array 包含 JSON NULL,则函数返回 JSON NULL。

SELECT ARRAY_MAX([NULL, PARSE_JSON('null'), NULL]);
Copy
+--------------------------------------------------+
| ARRAY_MAX([20, 0, PARSE_JSON('NULL'), 10, NULL]) |
|--------------------------------------------------|
| null                                             |
+--------------------------------------------------+

下面的示例展示了如果输入 ARRAY 为空,则该函数将返回 NULL :

SELECT ARRAY_MAX([]);
Copy
+---------------+
| ARRAY_MAX([]) |
|---------------|
| NULL          |
+---------------+

下面的示例展示了如果输入 ARRAY 仅包含 SQL NULLs,则函数返回 NULL:

SELECT ARRAY_MAX([NULL, NULL, NULL]);
Copy
+-------------------------+
| ARRAY_MAX([NULL, NULL]) |
|-------------------------|
| NULL                    |
+-------------------------+

要确定具有不同数据类型元素的数组中的最大值,则将这些元素 转换 为同一数据类型。以下示例将 DATE 元素转换为 TIMESTAMP 元素,以确定数组中的最大值:

SELECT ARRAY_MAX([date1::TIMESTAMP, timestamp1]) AS array_max
  FROM (
      VALUES ('1999-01-01'::DATE, '2023-12-09 22:09:26.000000000'::TIMESTAMP),
             ('2023-12-09'::DATE, '1999-01-01 22:09:26.000000000'::TIMESTAMP)
          AS t(date1, timestamp1)
      );
Copy
+---------------------------+
| ARRAY_MAX                 |
|---------------------------|
| "2023-12-09 22:09:26.000" |
| "2023-12-09 00:00:00.000" |
+---------------------------+
语言: 中文