- カテゴリ:
半構造化データ関数と構造化データ関数 (配列/オブジェクト)
ARRAY_MAX¶
入力 ARRAY が与えられると、 SQL NULL ではない最大値を持つ要素を返します。入力 ARRAY が空であるか、または SQL NULL の要素のみを含む場合、この関数は NULL を返します。
構文¶
ARRAY_MAX( <array> )
引数¶
array
入力 ARRAY。
戻り値¶
この関数は、 SQL NULL ではない最大値を持つ要素を含む VARIANT を返します。
array
が NULL であるか、空であるか、 SQL NULL の要素のみを含む場合、この関数は NULL を返します。
使用上の注意¶
SQL NULL は、半構造化データの明示的なnull値とは異なります(例: JSON データの JSON null)。明示的なnull値は、最大値を持つ要素を識別する際に考慮されます。
この関数は、配列の要素を比較して、返す要素を決定します。この関数は、同じデータ型または以下のデータ型の要素の比較をサポートしています。
NUMBER および FLOAT データ型の要素。
TIMESTAMP_LTZ および TIMESTAMP_TZ データ型の要素。
配列に他のデータ型の要素が含まれている場合、以下の例に示すように、要素を共通のデータ型に キャスト します。
例¶
次の例は、 ARRAY 定数 の中で最大値を持つ要素を含む VARIANT を返します。
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" |
+---------------------------+