- 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 - mytablezu ü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 Tabelle- mytableentsprechen:- (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.