Mysql
 sql >> Baza danych >  >> RDS >> Mysql

JSON_ARRAY_APPEND() – Dołącz wartości do tablicy JSON w MySQL

Używając dokumentów JSON z MySQL, możesz użyć JSON_ARRAY_APPEND() funkcja dodawania nowych wartości do tablicy.

Działa to tak, że jako pierwszy argument podajesz dokument JSON, a następnie podążasz za nim ścieżką, do której chcesz dołączyć, a następnie wartością do dołączenia.

W MySQL 5.7 ta funkcja nazywała się JSON_APPEND() ale ta nazwa nie jest już obsługiwana.

Składnia

Składnia wygląda tak:

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

Gdzie:

  • json_doc jest dokumentem JSON.
  • path jest ścieżką elementu, do którego ma zostać dodana nowa wartość.
  • val to nowa wartość, która zostanie dodana.

Pary ścieżka-wartość są oceniane od lewej do prawej. Dokument utworzony przez ocenę jednej pary staje się nową wartością, względem której oceniana jest następna para.

Przykład 1 – Podstawowe użycie

Oto przykład do zademonstrowania.

SELECT JSON_ARRAY_APPEND('[1, 2, 3]', '$', 4) AS 'Result';

Wynik:

+--------------+
| Result       |
+--------------+
| [1, 2, 3, 4] |
+--------------+

Tak więc trzeci argument jest dołączany do tablicy. W tym przypadku używam $ dla ścieżki. Jest to synonim dokumentu JSON, więc wartość jest dodawana do tablicy najwyższego poziomu (która w tym przypadku jest jedyną tablicą).

Przykład 2 – Tablica zagnieżdżona

Oto przykład dołączania wartości do tablicy, która jest zagnieżdżona w innej tablicy.

SELECT JSON_ARRAY_APPEND('[1, 2, [3, 4]]', '$[2]', 5) AS 'Result';

Wynik:

+-------------------+
| Result            |
+-------------------+
| [1, 2, [3, 4, 5]] |
+-------------------+

Więc tutaj używam $[2] jako ścieżka. To określa tablicę na trzecim elemencie (tablice używają numeracji od zera, więc liczba zaczyna się od zera).

Jeśli w tym elemencie nie było jeszcze tablicy, tworzona jest nowa tablica.

Tak:

SELECT JSON_ARRAY_APPEND('[1, 2, 3]', '$[2]', 4) AS 'Result';

Wynik:

+----------------+
| Result         |
+----------------+
| [1, 2, [3, 4]] |
+----------------+

Przykład 3 – Większy dokument JSON

W tym przykładzie użyto (nieco) większego dokumentu JSON. To pokazuje, jak ścieżka zmienia się w zależności od tego, gdzie w dokumencie znajduje się tablica.

SET @data = '{  
    "Person": {    
       "Name": "Homer", 
       "Hobbies": ["Eating", "Sleeping"]  
    }
 }';
SELECT JSON_ARRAY_APPEND(@data, '$.Person.Hobbies', "Base Jumping") AS 'Result';

Wynik:

+----------------------------------------------------------------------------------+
| Result                                                                           |
+----------------------------------------------------------------------------------+
| {"Person": {"Name": "Homer", "Hobbies": ["Eating", "Sleeping", "Base Jumping"]}} |
+----------------------------------------------------------------------------------+

I tak jak w poprzednim przykładzie, w razie potrzeby możemy również utworzyć nową, zagnieżdżoną tablicę:

SET @data = '{  
    "Person": {    
       "Name": "Homer", 
       "Hobbies": ["Eating", "Sleeping"]  
    }
 }';
SELECT JSON_ARRAY_APPEND(@data, '$.Person.Hobbies[0]', "Drinking") AS 'Result';

Wynik:

+--------------------------------------------------------------------------------+
| Result                                                                         |
+--------------------------------------------------------------------------------+
| {"Person": {"Name": "Homer", "Hobbies": [["Eating", "Drinking"], "Sleeping"]}} |
+--------------------------------------------------------------------------------+


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Błąd MySQL 1241:Operand powinien zawierać 1 kolumnę (kolumny)

  2. Jak dodać odwołanie do łącznika MySQL dla platformy .NET?

  3. Virtualmin:nie masz dostępu do tej bazy danych MySQL po zmianie hasła

  4. count(*) i count(nazwa_kolumny), jaka jest różnica?

  5. Aktualizacja MySQL PRZYPADEK KIEDY / WTEDY / INACZEJ