- 类别:
半结构化和结构化数据函数 (数组/对象)
ARRAY_MAX¶
给定一个输入 ARRAY,返回具有最高值的元素,该元素不是 SQL NULL。如果输入 ARRAY 为空或仅包含 SQL NULL 元素,则此函数返回 NULL。
语法¶
ARRAY_MAX( <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_MAX([20, 0, NULL, 10, NULL]);
+------------------------------------+
| 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]);
+--------------------------------------------------+
| ARRAY_MAX([20, 0, PARSE_JSON('NULL'), 10, NULL]) |
|--------------------------------------------------|
| null |
+--------------------------------------------------+
下面的示例展示了如果输入 ARRAY 为空,则该函数将返回 NULL :
SELECT ARRAY_MAX([]);
+---------------+
| ARRAY_MAX([]) |
|---------------|
| NULL |
+---------------+
下面的示例展示了如果输入 ARRAY 仅包含 SQL NULLs,则函数返回 NULL:
SELECT ARRAY_MAX([NULL, NULL, NULL]);
+-------------------------+
| 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)
);
+---------------------------+
| ARRAY_MAX |
|---------------------------|
| "2023-12-09 22:09:26.000" |
| "2023-12-09 00:00:00.000" |
+---------------------------+