- Kategorien:
Funktionen für semistrukturierte und strukturierte Daten (Array/Objekt)
OBJECT_CONSTRUCT_KEEP_NULL¶
Gibt ein OBJECT zurück, das aus den Argumenten konstruiert wurde und die Schlüssel-Wert-Paare mit NULL Werten enthält.
- Siehe auch:
Syntax¶
OBJECT_CONSTRUCT_KEEP_NULL( [<key>, <value> [, <key>, <value> , ...]] )
OBJECT_CONSTRUCT_KEEP_NULL(*)
Argumente¶
key
Der Schlüssel in einem Schlüssel-Wert-Paar. Jeder Schlüssel ist ein VARCHAR-Wert.
value
Der mit dem Schlüssel verbundene Wert Der Wert kann ein beliebiger Datentyp sein.
*
Beim Aufrufen mit einem Sternchen (Platzhalter) wird der OBJECT-Wert aus den angegebenen Daten unter Verwendung der Attributnamen als Schlüssel und der zugeordneten Werte als Wert erstellt. Siehe die Beispiele unten.
Wenn Sie einen Platzhalter an die Funktion übergeben, können Sie den Platzhalter mit dem Namen oder Alias für die Tabelle qualifizieren. Um beispielsweise alle Spalten aus der Tabelle
mytable
zu übergeben, geben Sie Folgendes ein:(mytable.*)
Sie können auch die Schlüsselwörter ILIKE und EXCLUDE zum Filtern verwenden:
ILIKE filtert nach Spaltennamen, die dem angegebenen Muster entsprechen. Es ist nur ein Muster erlaubt. Beispiel:
(* ILIKE 'col1%')
EXCLUDE filtert Spaltennamen heraus, die nicht mit der angegebenen Spalte oder den angegebenen Spalten übereinstimmen. Beispiel:
(* EXCLUDE col1) (* EXCLUDE (col1, col2))
Qualifizierer sind gültig, wenn Sie diese Schlüsselwörter verwenden. Das folgende Beispiel verwendet das Schlüsselwort ILIKE, um nach allen Spalten zu filtern, die dem Muster
col1%
in der Tabellemytable
entsprechen:(mytable.* ILIKE 'col1%')
Die Schlüsselwörter ILIKE und EXCLUDE können nicht in einem einzigen Funktionsaufruf kombiniert werden.
Für diese Funktion sind die Schlüsselwörter ILIKE und EXCLUDE nur in einer SELECT-Liste oder GROUP BY-Klausel gültig.
Weitere Informationen zu den Schlüsselwörtern ILIKE und EXCLUDE finden Sie im Abschnitt „Parameter“ unter SELECT.
Rückgabewerte¶
Der Datentyp des zurückgegebenen Werts ist OBJECT.
Nutzungshinweise¶
Wenn der Schlüssel NULL (d. h. SQL NULL) ist, wird das Schlüssel-Wert-Paar im resultierenden Objekt weggelassen. Wenn der Wert jedoch NULL ist, wird das Schlüssel-Wert-Paar beibehalten.
Das konstruierte Objekt behält nicht unbedingt die ursprüngliche Reihenfolge der Schlüssel-Wert-Paare bei.
Beispiele¶
Diese Beispiel zeigt den Unterschied zwischen OBJECT_CONSTRUCT und 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 | } |
| | } | |
+-------------------+-------------------+------------------+
Das folgende Beispiel zeigt auch den Unterschied zwischen OBJECT_CONSTRUCT und OBJECT_CONSTRUCT_KEEP NULL, wobei hier aber eine kleine Tabelle verwendet wird (die vor der Abfrage angezeigt wird):
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 |
| | } |
+----------------------------------+----------------------------------+
Für Beispiele, die die eng verwandte Funktion OBJECT_CONSTRUCT verwenden, siehe OBJECT_CONSTRUCT.