- Catégories :
Fonctions de données semi-structurées et structurées (tableau/objet)
OBJECT_CONSTRUCT_KEEP_NULL¶
Renvoie un OBJECT construit à partir des arguments qui conservent les paires clé-valeurs avec les valeurs NULL.
- Voir aussi :
Syntaxe¶
OBJECT_CONSTRUCT_KEEP_NULL( [<key>, <value> [, <key>, <value> , ...]] )
OBJECT_CONSTRUCT_KEEP_NULL(*)
Arguments¶
key
Clé dans une paire clé-valeur. Chaque clé est une valeur VARCHAR.
value
Valeur associée à la clé. La valeur peut être n’importe quel type de données.
*
Lorsqu’elle est invoquée avec un astérisque (caractère générique), la valeur OBJECT est construite à partir des données spécifiées en utilisant les noms d’attributs comme clés et les valeurs associées comme valeurs. Voir les exemples ci-dessous.
Lorsque vous transmettez un caractère générique à la fonction, vous pouvez qualifier le caractère générique avec le nom ou l’alias de la table. Par exemple, pour transmettre toutes les colonnes de la table nommée
mytable
, précisez les éléments suivants :(mytable.*)
Vous pouvez également utiliser les mots-clés ILIKE et EXCLUDE pour le filtrage :
ILIKE filtre les noms de colonnes qui correspondent au motif spécifié. Un seul motif est autorisé. Par exemple :
(* ILIKE 'col1%')
EXCLUDE filtre les noms de colonnes qui ne correspondent pas à la / aux colonnes spécifiées. Par exemple :
(* EXCLUDE col1) (* EXCLUDE (col1, col2))
Les qualificatifs sont valides lorsque vous utilisez ces mots-clés. L’exemple suivant utilise le mot-clé ILIKE pour filtrer toutes les colonnes qui correspondent au motif
col1%
dans la tablemytable
:(mytable.* ILIKE 'col1%')
Les mots-clés ILIKE et EXCLUDE ne peuvent pas être combinés dans un seul appel de fonction.
Pour cette fonction, les mots-clés ILIKE et EXCLUDE ne sont valables que dans une liste SELECT ou une clause GROUP BY.
Pour plus d’informations sur les mots-clés ILIKE et EXCLUDE, voir la section « Paramètres » dans SELECT.
Renvoie¶
Le type de données de la valeur renvoyée est OBJECT.
Notes sur l’utilisation¶
Si la clé est NULL (c’est-à-dire SQL NULL), la paire clé-valeur est omise de l’objet résultant. Toutefois, si la valeur est NULL, la paire clé-valeur est conservée.
L’objet construit ne conserve pas nécessairement l’ordre d’origine des paires clé-valeur.
Exemples¶
Cet exemple montre la différence entre OBJECT_CONSTRUCT et OBJECT_CONSTRUCT_KEEP_NULL :
SELECT OBJECT_CONSTRUCT('key_1', 'one', 'key_2', NULL) AS WITHOUT_KEEP_NULL,
OBJECT_CONSTRUCT_KEEP_NULL('key_1', 'one', 'key_2', NULL) AS KEEP_NULL_1,
OBJECT_CONSTRUCT_KEEP_NULL('key_1', 'one', NULL, 'two') AS KEEP_NULL_2;
+-------------------+-------------------+------------------+
| WITHOUT_KEEP_NULL | KEEP_NULL_1 | KEEP_NULL_2 |
|-------------------+-------------------+------------------|
| { | { | { |
| "key_1": "one" | "key_1": "one", | "key_1": "one" |
| } | "key_2": null | } |
| | } | |
+-------------------+-------------------+------------------+
L’exemple suivant montre également la différence entre OBJECT_CONSTRUCT et OBJECT_CONSTRUCT_KEEP NULL, mais cet exemple utilise une petite table (qui est affichée avant la requête) :
CREATE TABLE demo_table_1_with_nulls (province VARCHAR, created_date DATE);
INSERT INTO demo_table_1_with_nulls (province, created_date) VALUES
('Manitoba', '2024-01-18'::DATE),
('British Columbia', NULL),
('Alberta', '2024-01-19'::DATE),
(NULL, '2024-01-20'::DATE);
SELECT *
FROM demo_table_1_with_nulls
ORDER BY province;
+------------------+--------------+
| PROVINCE | CREATED_DATE |
|------------------+--------------|
| Alberta | 2024-01-19 |
| British Columbia | NULL |
| Manitoba | 2024-01-18 |
| NULL | 2024-01-20 |
+------------------+--------------+
SELECT OBJECT_CONSTRUCT(*) AS oc,
OBJECT_CONSTRUCT_KEEP_NULL(*) AS oc_keep_null
FROM demo_table_1_with_nulls
ORDER BY oc_keep_null['PROVINCE'];
+----------------------------------+----------------------------------+
| OC | OC_KEEP_NULL |
|----------------------------------+----------------------------------|
| { | { |
| "CREATED_DATE": "2024-01-19", | "CREATED_DATE": "2024-01-19", |
| "PROVINCE": "Alberta" | "PROVINCE": "Alberta" |
| } | } |
| { | { |
| "PROVINCE": "British Columbia" | "CREATED_DATE": null, |
| } | "PROVINCE": "British Columbia" |
| | } |
| { | { |
| "CREATED_DATE": "2024-01-18", | "CREATED_DATE": "2024-01-18", |
| "PROVINCE": "Manitoba" | "PROVINCE": "Manitoba" |
| } | } |
| { | { |
| "CREATED_DATE": "2024-01-20" | "CREATED_DATE": "2024-01-20", |
| } | "PROVINCE": null |
| | } |
+----------------------------------+----------------------------------+
Pour des exemples qui utilisent la fonction OBJECT_CONSTRUCT étroitement liée, voir OBJECT_CONSTRUCT.