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

JSON_ARRAY_INSERT() – Wstaw wartości do tablicy JSON w MySQL

W MySQL JSON_ARRAY_INSERT() funkcja służy do wstawiania nowej wartości do tablicy.

Jako pierwszy argument podajesz dokument JSON, po którym następuje ścieżka do wstawienia, a następnie wartość do wstawienia.

Składnia

Składnia wygląda tak:

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

Gdzie:

  • json_doc jest dokumentem JSON.
  • path jest ścieżką elementu, dla którego należy wstawić nową wartość.
  • val to nowa wartość, która zostanie wstawiona.

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_INSERT('[1, 2, 3]', '$[1]', 4) AS 'Result';

Wynik:

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

Tak więc trzeci argument jest wstawiany do tablicy w określonej ścieżce. W tym przypadku używam $[1] dla ścieżki, która odnosi się do drugiego elementu (tablice JSON używają numeracji od zera – numeracja zaczyna się od 0 ).

Przykład 2 – Tablica zagnieżdżona

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

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

Wynik:

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

Więc tutaj używam $[2][1] jako ścieżka. [2] odnosi się do trzeciego elementu tablicy zewnętrznej. [1] odnosi się do drugiego elementu zagnieżdżonej tablicy.

Przykład 3 – Większy dokument JSON

W tym przykładzie użyto (nieco) większego dokumentu JSON. Pokazuje to, 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_INSERT(@data, '$.Person.Hobbies[1]', "Base Jumping") AS 'Result';

Wynik:

+----------------------------------------------------------------------------------+
| Result                                                                           |
+----------------------------------------------------------------------------------+
| {"Person": {"Name": "Homer", "Hobbies": ["Eating", "Base Jumping", "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. Gdzie klauzula do filtrowania wierszy w MySQL

  2. Typ MySQL ENUM a dołączanie tabel

  3. PDO MySQL:Wstaw wiele wierszy w jednym zapytaniu

  4. Symulacja polecenia ORDER BY FIELD() MySQL w Postgresql

  5. Ostrzeżenie:mysql_fetch_array():podany argument nie jest prawidłowym wynikiem MySQL