Catégories :

Fonctions de données semi-structurées et structurées (tableau/objet)

ARRAY_MAX

Étant donné un ARRAY d’entrée, renvoie l’élément dont la valeur la plus élevée n’est pas SQL NULL. Si le ARRAY d’entrée est vide ou ne contient que des éléments SQL NULL, cette fonction renvoie NULL.

Syntaxe

ARRAY_MAX( <array> )
Copy

Arguments

array

Le ARRAY d’entrée.

Renvoie

Cette fonction renvoie un VARIANT qui contient l’élément ayant la valeur la plus élevée qui n’est pas un SQL NULL.

La fonction renvoie NULL si array est NULL, vide, ou ne contient que des éléments SQL NULL.

Notes sur l’utilisation

  • Un SQL NULL se distingue d’une valeur nulle explicite dans les données semi-structurées (par exemple, un JSON null dans des données JSON). Les valeurs nulles explicites sont prises en compte lors de l’identification de l’élément ayant la valeur la plus élevée.

  • La fonction détermine l’élément à renvoyer en comparant les éléments du tableau. La fonction permet de comparer des éléments du même type de données ou des types de données suivants :

    • Les éléments de types de données NUMBER et FLOAT.

    • Les éléments de types de données TIMESTAMP_LTZ et TIMESTAMP_TZ.

    Si le tableau contient des éléments d’autres types de données, convertissez les éléments vers un type de données commun, comme le montre l’exemple ci-dessous.

Exemples

L’exemple suivant renvoie un VARIANT contenant l’élément ayant la valeur la plus élevée dans une constante ARRAY:

SELECT ARRAY_MAX([20, 0, NULL, 10, NULL]);
Copy
+------------------------------------+
| ARRAY_MAX([20, 0, NULL, 10, NULL]) |
|------------------------------------|
| 20                                 |
+------------------------------------+

L’exemple suivant montre qu’un JSON null est traité différemment d’une valeur SQL NULL. Si array contient un JSON null, la fonction renvoie le JSON null.

SELECT ARRAY_MAX([NULL, PARSE_JSON('null'), NULL]);
Copy
+--------------------------------------------------+
| ARRAY_MAX([20, 0, PARSE_JSON('NULL'), 10, NULL]) |
|--------------------------------------------------|
| null                                             |
+--------------------------------------------------+

L’exemple suivant montre que la fonction renvoie NULL si le ARRAY d’entrée est vide :

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

L’exemple suivant montre que la fonction renvoie NULL si le ARRAY d’entrée ne contient que des SQL NULLs :

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

Pour déterminer la valeur maximale d’un tableau contenant des éléments de types de données différents, convertissez les éléments dans le même type de données. L’exemple suivant convertit un élément DATE en un élément TIMESTAMP pour déterminer la valeur maximale du tableau :

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)
      );
Copy
+---------------------------+
| ARRAY_MAX                 |
|---------------------------|
| "2023-12-09 22:09:26.000" |
| "2023-12-09 00:00:00.000" |
+---------------------------+