MariaDB
 sql >> Baza danych >  >> RDS >> MariaDB

MariaDB JSON_REPLACE() Objaśnienie

W MariaDB, JSON_REPLACE() to wbudowana funkcja, która zastępuje istniejące wartości w dokumencie JSON i zwraca wynik.

Składnia

Składnia wygląda tak:

JSON_REPLACE(json_doc, path, val[, path, val] ...)

Przykład

Oto przykład do zademonstrowania.

SET @json = '{ "name" : "Wag", "type" : "Cat" }';

SELECT JSON_REPLACE(@json, '$.type', 'Dog');

Wynik:

+--------------------------------------+
| JSON_REPLACE(@json, '$.type', 'Dog') |
+--------------------------------------+
| {"name": "Wag", "type": "Dog"}       |
+--------------------------------------+

W tym przypadku podmieniłem wartość Cat z Dog .

Elementy tablicy

Aby zastąpić element tablicy, określ indeks elementu:

SET @json = '{ "name" : "Wag", "scores" : [8, 0, 9] }';

SELECT JSON_REPLACE(@json, '$.scores[1]', 7);

Wynik:

+---------------------------------------+
| JSON_REPLACE(@json, '$.scores[1]', 7) |
+---------------------------------------+
| {"name": "Wag", "scores": [8, 7, 9]}  |
+---------------------------------------+

W tym przypadku drugi element tablicy został zastąpiony nową wartością. Tablice są oparte na zerach, więc $.scores[1] odnosi się do drugiego elementu w tablicy.

Wiele ścieżek

Składnia pozwala na zastąpienie wartości w wielu ścieżkach jednym wywołaniem JSON_REPLACE() .

Gdy podajesz wiele ścieżek, są one oceniane od lewej do prawej. Oznacza to, że wynik z wcześniejszej oceny jest używany jako wartość dla następnej.

Po pierwsze, oto przykład, który zastępuje wiele wartości w dokumencie na podstawie ich klucza:

SET @json = '
    { 
        "name" : "Flutter", 
        "type" : "Bird",
        "weight" : 10
    }
';

SELECT JSON_REPLACE(@json, '$.type', 'Bat', '$.weight', 20);

Wynik:

+------------------------------------------------------+
| JSON_REPLACE(@json, '$.type', 'Bat', '$.weight', 20) |
+------------------------------------------------------+
| {"name": "Flutter", "type": "Bat", "weight": 20}     |
+------------------------------------------------------+

Każda wartość została zastąpiona zgodnie z oczekiwaniami.

W następnym przykładzie zastępujemy wiele elementów w tablicy:

SET @json = '{ "scores" : [ 0, 1, 2, 3, 4, 5 ] }';

SELECT 
    JSON_REPLACE(
        @json, 
        '$.scores[2]', "a", 
        '$.scores[4]', "b"
    ) AS Result;

Wynik:

+------------------------------------+
| Result                             |
+------------------------------------+
| {"scores": [0, 1, "a", 3, "b", 5]} |
+------------------------------------+

Argumenty zerowe

Jeśli json_doc lub dowolna ze path argumenty są null , wynik to NULL . Ale jeśli value argument jest null , wartość jest zastępowana null .

SELECT 
    JSON_REPLACE(null, '$.a', 1) AS a,
    JSON_REPLACE('{"a":1}', null, 1) AS b,
    JSON_REPLACE('{"a":1}', '$.a', null) AS c;

Wynik:

+------+------+-------------+
| a    | b    | c           |
+------+------+-------------+
| NULL | NULL | {"a": null} |
+------+------+-------------+

W poniższym przykładzie brakuje jednego z argumentów ścieżki w każdym wywołaniu JSON_REPLACE() . Powoduje to NULL zwrot za oba połączenia:

SET @json = '{ "name" : "Wag", "type" : "Cat" }';

SELECT 
    JSON_REPLACE(@json, null, 'Bark', '$.type', 'Dog') AS a,
    JSON_REPLACE(@json, '$.name', 'Bark', null, 'Dog') AS b;

Wynik:

+------+------+
| a    | b    |
+------+------+
| NULL | NULL |
+------+------+

Nieprawidłowa liczba parametrów

Wywołanie JSON_REPLACE() bez argumentu powoduje błąd:

SELECT JSON_REPLACE();

Wynik:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_REPLACE'

Tak samo jest, gdy nie przekazano wystarczającej liczby argumentów:

SELECT JSON_REPLACE('{"a":1}');

Wynik:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_REPLACE'

Podobne funkcje

JSON_INSERT() funkcja może wstawić nowe dane.

JSON_SET() funkcja może wstawiać nowe dane i aktualizować istniejące. Więc JSON_SET() jest jak JSON_INSERT() i JSON_REPLACE() w jednej funkcji.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak działa funkcja LOWER() w MariaDB

  2. Podstawy szyfrowania bazy danych serwera MariaDB

  3. Jak działa REVERSE() w MariaDB

  4. Jak działa ASIN() w MariaDB

  5. Jak WEEKDAY() działa w MariaDB