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

MariaDB JSON_ARRAY_APPEND() Objaśnienie

W MariaDB, JSON_ARRAY_APPEND() to wbudowana funkcja, która dołącza wartości na końcu określonych tablic w dokumencie JSON i zwraca wynik.

Składnia

Składnia wygląda tak:

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

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

Przykład

Oto przykład demonstrujący funkcję.

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

SELECT JSON_ARRAY_APPEND(@json_doc, '$', 4);

Wynik:

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

W tym przypadku wartość 4 został dołączony na końcu tablicy.

Dołącz wiele wartości

Możesz dołączyć wiele wartości w jednym wywołaniu JSON_ARRAY_APPEND() .

Przykład:

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

SELECT JSON_ARRAY_APPEND(@json_doc, '$', 4, '$', 5);

Wynik:

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

Wiele tablic

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

Przykład:

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

SELECT JSON_ARRAY_APPEND(@json_doc, '$.a', 4, '$.b', 5);

Wynik:

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

Zagnieżdżone tablice

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

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

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

Wynik:

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

W poniższym przykładzie oryginalny dokument JSON nie zawiera tablicy zagnieżdżonej, ale JSON_ARRAY_APPEND() tworzy zagnieżdżoną tablicę na podstawie naszej ścieżki:

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

SELECT JSON_ARRAY_APPEND(@json_doc, '$[3]', 4);

Wynik:

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

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", "Chicken"]  
    }
 }';
SELECT JSON_DETAILED(
        JSON_ARRAY_APPEND(
            @json_doc, 
            '$.pet.diet', 
            'Water')
);

Wynik:

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

A oto taki, który tworzy zagnieżdżoną tablicę:

SET @json_doc = '{  
    "pet": {    
       "name": "Scratch", 
       "diet": ["Beef", "Water"]
    }
 }';
SELECT JSON_DETAILED(
        JSON_ARRAY_APPEND(
            @json_doc, 
            '$.pet.diet[1]', 
            'Beer')
);

Wynik:

{
    "pet": 
    {
        "name": "Scratch",
        "diet": 
        [
            "Beef",
            
            [
                "Water",
                "Beer"
            ]
        ]
    }
}

Argumenty zerowe

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

SELECT JSON_ARRAY_APPEND(null, '$', 4);

Wynik:

+---------------------------------+
| JSON_ARRAY_APPEND(null, '$', 4) |
+---------------------------------+
| NULL                            |
+---------------------------------+

To samo dotyczy path argument:

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

SELECT JSON_ARRAY_APPEND(@json_doc, null, 4);

Wynik:

+---------------------------------------+
| JSON_ARRAY_APPEND(@json_doc, null, 4) |
+---------------------------------------+
| NULL                                  |
+---------------------------------------+

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

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

SELECT JSON_ARRAY_APPEND(@json_doc, '$', null);

Wynik:

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

Możesz także użyć JSON_ARRAY_INSERT() aby wstawić 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. Co sprawdzić, czy wykorzystanie We/Wy MySQL jest wysokie?

  2. Konwertuj wyniki zapytania na listę rozdzielaną przecinkami w MariaDB

  3. Jak działa RAND() w MariaDB

  4. COUNT() Funkcja w MariaDB

  5. MariaDB ROWNUM() Wyjaśnione