- 类别:
:doc:`/sql-reference/functions-semistructured`(数组/对象)
ARRAY_MIN¶
给定一个输入 ARRAY,返回具有最低值的元素,该元素不是 SQL NULL。如果输入 ARRAY 为空或仅包含 SQL NULL 元素,则此函数返回 NULL。
语法¶
ARRAY_MIN( <array> )
实参¶
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]);
+------------------------------------+
| ARRAY_MIN([20, 0, NULL, 10, NULL]) |
|------------------------------------|
| 0 |
+------------------------------------+
下面的示例展示了如果输入 ARRAY 为空,则该函数将返回 NULL :
SELECT ARRAY_MIN([]);
+---------------+
| ARRAY_MIN([]) |
|---------------|
| NULL |
+---------------+
下面的示例展示了如果输入 ARRAY 仅包含 SQL NULLs,则函数返回 NULL:
SELECT ARRAY_MIN([NULL, NULL, NULL]);
+-------------------------+
| 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)
);
+---------------------------+
| ARRAY_MIN |
|---------------------------|
| "1999-01-01 00:00:00.000" |
| "1999-01-01 22:09:26.000" |
+---------------------------+