类别:

:doc:`/sql-reference/functions-semistructured`(数组/对象)

ARRAY_MIN

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

语法

ARRAY_MIN( <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_MIN([20, 0, NULL, 10, NULL]);
Copy
+------------------------------------+
| ARRAY_MIN([20, 0, NULL, 10, NULL]) |
|------------------------------------|
| 0                                  |
+------------------------------------+

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

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

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

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

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

SELECT ARRAY_MIN([date1::TIMESTAMP, timestamp1]) AS array_min
  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_MIN                 |
|---------------------------|
| "1999-01-01 00:00:00.000" |
| "1999-01-01 22:09:26.000" |
+---------------------------+
语言: 中文