- Kategorien:
Funktionen für semistrukturierte und strukturierte Daten (Array/Objekt)
ARRAY_MAX¶
Gibt für ein Eingabe-ARRAY das Element mit dem höchsten Wert zurück, das nicht SQL NULL ist. Wenn das Eingabe-ARRAY leer ist oder nur SQL NULL-Elemente enthält, gibt diese Funktion NULL zurück.
Syntax¶
ARRAY_MAX( <array> )
Argumente¶
array
Das Eingabe-ARRAY.
Rückgabewerte¶
Diese Funktion gibt einen VARIANT-Wert zurück, der das Element mit dem höchsten Wert enthält, das nicht SQL NULL ist.
Die Funktion gibt NULL zurück, wenn array
NULL ist, leer ist oder nur SQL NULL-Elemente enthält.
Nutzungshinweise¶
Ein SQL NULL-Wert unterscheidet sich von einem expliziten Nullwert in semistrukturierten Daten (z. B. ein JSON null in JSON-Daten). Explizite Nullwerte werden bei der Identifizierung des Elements mit dem höchsten Wert berücksichtigt.
Die Funktion bestimmt das zurückzugebende Element, indem sie die Elemente im Array vergleicht. Die Funktion unterstützt den Vergleich von Elementen desselben Datentyps oder der folgenden Datentypen:
Elemente der Datentypen NUMBER und FLOAT.
Elemente der Datentypen TIMESTAMP_LTZ und TIMESTAMP_TZ.
Wenn das Array Elemente anderer Datentypen enthält, werden die Elemente in einen gemeinsamen Datentyp umgewandelt, wie im folgenden Beispiel gezeigt.
Beispiele¶
Im folgende Beispiel wird ein VARIANT-Wert zurückgegeben, der das Element mit dem höchsten Wert in einer ARRAY-Konstante enthält:
SELECT ARRAY_MAX([20, 0, NULL, 10, NULL]);
+------------------------------------+
| ARRAY_MAX([20, 0, NULL, 10, NULL]) |
|------------------------------------|
| 20 |
+------------------------------------+
Im folgenden Beispiel wird gezeigt, dass ein JSON null-Wert anders behandelt wird als ein SQL NULL-Wert. Wenn array
einen JSON null-Wert enthält, gibt die Funktion den JSON null-Wert zurück.
SELECT ARRAY_MAX([NULL, PARSE_JSON('null'), NULL]);
+--------------------------------------------------+
| ARRAY_MAX([20, 0, PARSE_JSON('NULL'), 10, NULL]) |
|--------------------------------------------------|
| null |
+--------------------------------------------------+
Im folgenden Beispiel wird gezeigt, dass die Funktion den Wert NULL zurückgibt, wenn das Eingabe-ARRAY leer ist:
SELECT ARRAY_MAX([]);
+---------------+
| ARRAY_MAX([]) |
|---------------|
| NULL |
+---------------+
Im folgenden Beispiel wird gezeigt, dass die Funktion den Wert NULL zurückgibt, wenn das Eingabe-ARRAY nur SQL NULL-Werte enthält:
SELECT ARRAY_MAX([NULL, NULL, NULL]);
+-------------------------+
| ARRAY_MAX([NULL, NULL]) |
|-------------------------|
| NULL |
+-------------------------+
Um den Maximalwert in einem Array mit Elementen unterschiedlicher Datentypen zu ermitteln, werden die Elemente in denselben Datentyp umgewandelt. Im folgenden Beispiel wird ein DATE-Element in ein TIMESTAMP-Element umgewandelt, um den Maximalwert im Array zu ermitteln:
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" |
+---------------------------+