# JSON_PATCH

> Mit SQL in StackQL einen JSON MergePatch auf ein JSON-Dokument anwenden, um JSON-Objekte zu ändern oder zusammenzuführen.

Source: https://stackql.io/de/language-spec/functions/json/json_patch

Wendet einen JSON MergePatch (RFC-7396) auf ein JSON-Dokument an und ändert es gemäß den angegebenen Operationen. Diese Funktion dient zum Hinzufügen, Ändern oder Löschen von Elementen in JSON-Objekten, behandelt JSON-Arrays jedoch als atomare Einheiten.

Siehe auch:  
[[`SELECT`]](/language-spec/select) [[` JSON_EXTRACT `]](/language-spec/functions/json/json_extract)

* * * 

## Syntax

```sql
SELECT JSON_PATCH(target_json, patch_json) FROM <multipartIdentifier>;
```

## Argumente

__*target_json*__  
Das JSON-Dokument, auf das der Patch angewendet werden soll.

__*patch_json*__  
Ein JSON-Dokument, das die gemäß dem MergePatch-Algorithmus anzuwendenden Änderungen beschreibt.

## Rückgabewert(e)
Gibt das geänderte JSON-Dokument zurück, nachdem der Patch angewendet wurde.

* * *

## Beispiele

### Einfacher MergePatch

```sql
-- Example: Simple merge of new elements into the target JSON object
SELECT JSON_PATCH('{"a":1,"b":2}', '{"c":3,"d":4}') AS patched_json;
```

Ausgabe: `{"a":1,"b":2,"c":3,"d":4}`

### Element in einem Array ersetzen

```sql
-- Example: Replacing an array with a single value in the JSON object
SELECT JSON_PATCH('{"a":[1,2],"b":2}', '{"a":9}') AS patched_json;
```

Ausgabe: `{"a":9,"b":2}`

### Element mit null entfernen

```sql
-- Example: Removing an element by setting it to null
SELECT JSON_PATCH('{"a":1,"b":2}', '{"a":9,"b":null,"c":8}') AS patched_json;
```

Ausgabe: `{"a":9,"c":8}`

### Verschachtelter MergePatch

```sql
-- Example: Nested merge patch updating sub-keys within a nested JSON object
SELECT JSON_PATCH('{"a":{"x":1,"y":2},"b":3}', '{"a":{"y":9},"c":8}') AS patched_json;
```

Ausgabe: `{"a":{"x":1,"y":9},"b":3,"c":8}`

Diese Funktionalität ermöglicht flexible und dynamische Aktualisierungen von in einer Datenbank gespeichertem JSON und ist besonders nützlich für Anwendungen, die bedingte Änderungen von Datenstrukturen erfordern.
