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

MariaDB JSON_ARRAY_INSERT() Objaśnienie

W MariaDB, JSON_ARRAY_INSERT() to wbudowana funkcja, która wstawia wartość do dokumentu JSON i zwraca wynik.

Składnia

Składnia wygląda tak:

JSON_ARRAY_INSERT(json_doc, path, value[, path, value] ...)

Gdzie json_doc jest dokumentem JSON, path jest ścieżką do miejsca, w którym chcesz wstawić wartości, a value to wartość do wstawienia.

Przykład

Oto przykład do zademonstrowania.

SELECT JSON_ARRAY_INSERT('[0, 1, 2]', '$[1]', 3);

Wynik:

+-------------------------------------------+
| JSON_ARRAY_INSERT('[0, 1, 2]', '$[1]', 3) |
+-------------------------------------------+
| [0, 3, 1, 2]                              |
+-------------------------------------------+

W tym przypadku wartość 3 został wstawiony do tablicy w pozycji 1 . Tablice są oparte na zerach, więc staje się drugim elementem tablicy.

Wstaw wiele wartości

Możesz wstawić wiele wartości w jednym wywołaniu JSON_ARRAY_INSERT() .

Przykład:

SELECT JSON_ARRAY_INSERT('[0, 1, 2]', '$[0]', 4, '$[2]', 5);

Wynik:

+------------------------------------------------------+
| JSON_ARRAY_INSERT('[0, 1, 2]', '$[0]', 4, '$[2]', 5) |
+------------------------------------------------------+
| [4, 0, 5, 1, 2]                                      |
+------------------------------------------------------+

Ocena odbywa się od lewej do prawej.

Oto, co się stanie, jeśli zmienimy path /value argumenty wokół:

SELECT JSON_ARRAY_INSERT('[0, 1, 2]', '$[2]', 5, '$[0]', 4);

Wynik:

+------------------------------------------------------+
| JSON_ARRAY_INSERT('[0, 1, 2]', '$[2]', 5, '$[0]', 4) |
+------------------------------------------------------+
| [4, 0, 1, 5, 2]                                      |
+------------------------------------------------------+

Wiele tablic

Możesz wstawić wartości do więcej niż jednej tablicy w ramach tego samego wywołania JSON_ARRAY_INSERT() .

Przykład:

SET @json_doc = '{"a": [0, 1], "b": [2, 3]}';

SELECT JSON_ARRAY_INSERT(@json_doc, '$.a[1]', 4, '$.b[2]', 5);

Wynik:

+--------------------------------------------------------+
| JSON_ARRAY_INSERT(@json_doc, '$.a[1]', 4, '$.b[2]', 5) |
+--------------------------------------------------------+
| {"a": [0, 4, 1], "b": [2, 3, 5]}                       |
+--------------------------------------------------------+

Zagnieżdżone tablice

Oto przykład wstawiania wartości do zagnieżdżonej tablicy:

SET @json_doc = '[0, 1, [2, 3]]';

SELECT JSON_ARRAY_INSERT(@json_doc, '$[2][1]', 4);

Wynik:

+--------------------------------------------+
| JSON_ARRAY_INSERT(@json_doc, '$[2][1]', 4) |
+--------------------------------------------+
| [0, 1, [2, 4, 3]]                          |
+--------------------------------------------+

Większy dokument JSON

Oto przykład z nieco większym dokumentem JSON.

Używam również JSON_DETAILED() aby upiększyć wynik:

SET @json_doc = '{  
    "pet": {    
       "name": "Fluffy", 
       "diet": ["Fish", "Water"]  
    }
 }';
SELECT JSON_DETAILED(
        JSON_ARRAY_INSERT(
            @json_doc, 
            '$.pet.diet[1]', 
            'Chicken')
);

Wynik:

{
    "pet": 
    {
        "name": "Fluffy",
        "diet": 
        [
            "Fish",
            "Chicken",
            "Water"
        ]
    }
}

Argumenty zerowe

Jeśli pierwszym argumentem jest NULL , wynik to NULL :

SELECT JSON_ARRAY_INSERT(null, '$[1]', 4);

Wynik:

+------------------------------------+
| JSON_ARRAY_INSERT(null, '$[1]', 4) |
+------------------------------------+
| NULL                               |
+------------------------------------+

To samo dotyczy path argument:

SELECT JSON_ARRAY_INSERT('[0, 1, 2, 3]', null, 4);

Wynik:

+--------------------------------------------+
| JSON_ARRAY_INSERT('[0, 1, 2, 3]', null, 4) |
+--------------------------------------------+
| NULL                                       |
+--------------------------------------------+

Jeśli jednak value argument to NULL , a następnie NULL jest wstawiany do tablicy:

SELECT JSON_ARRAY_INSERT('[0, 1, 2]', '$[1]', null);

Wynik:

+----------------------------------------------+
| JSON_ARRAY_INSERT('[0, 1, 2]', '$[1]', null) |
+----------------------------------------------+
| [0, null, 1, 2]                              |
+----------------------------------------------+

Możesz także użyć JSON_ARRAY_APPEND() aby dołączyć wartości do tablicy.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Popraw wydajność klastra Galera dla MySQL lub MariaDB

  2. 8 sposobów na dodanie godziny do daty w MariaDB

  3. Wskazówki dotyczące monitorowania klastra MariaDB

  4. Przełączanie baz danych i przełączanie awaryjne dla witryn Drupal przy użyciu MySQL lub PostgreSQL

  5. Odejmij miesiąc od daty w MariaDB