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

JSON_INSERT() – Wstaw wartości do dokumentu JSON w MySQL

W MySQL JSON_INSERT() funkcja wstawia wartość do dokumentu JSON i zwraca wynik.

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_INSERT('{"a": 1, "b": 2}', '$.c', 3) AS 'Result';

Wynik:

+--------------------------+
| Result                   |
+--------------------------+
| {"a": 1, "b": 2, "c": 3} |
+--------------------------+

Tak więc trzeci argument jest wstawiany do tablicy w określonej ścieżce. W tym przypadku używam $.c dla ścieżki i 3 dla wstawianej wartości. Daje to parę klucz/wartość "c": 3 .

Oto kolejny przykład:

SELECT 
  JSON_INSERT('{"Name": "Homer", "Gender": "Male"}', '$.Age', 39) AS 'Result';

Wynik:

+------------------------------------------------+
| Result                                         |
+------------------------------------------------+
| {"Age": 39, "Name": "Homer", "Gender": "Male"} |
+------------------------------------------------+

Przykład 2 – próba nadpisania istniejącej ścieżki

Para ścieżka-wartość dla istniejącej ścieżki w dokumencie jest ignorowana i nie zastępuje istniejącej wartości dokumentu.

Więc jeśli zmodyfikujemy poprzedni przykład, aby wstawić wartość w Name (który już istnieje), wstawianie nie odbywa się:

SELECT 
  JSON_INSERT('{"Name": "Homer", "Gender": "Male"}', '$.Name', "Bart") AS 'Result';

Wynik:

+-------------------------------------+
| Result                              |
+-------------------------------------+
| {"Name": "Homer", "Gender": "Male"} |
+-------------------------------------+

Przykład 3 – Tablice

Możesz wstawić wartości do tablicy, używając ścieżki za końcem istniejącej tablicy. Przykład:

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

Wynik:

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

Jeśli jednak użyjesz ścieżki, która już istnieje w tablicy, tablica pozostanie niezmieniona:

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

Wynik:

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

Jeśli istniejąca wartość nie jest tablicą, jest automatycznie zawijana jako tablica, a następnie rozszerzana o nową wartość. Przykład:

SELECT JSON_INSERT('{"a": 1, "b": 2}', '$[2]', 3) AS 'Result';

Wynik:

+-----------------------+
| Result                |
+-----------------------+
| [{"a": 1, "b": 2}, 3] |
+-----------------------+

Ale jeszcze raz, jeśli spróbujesz wstawić wartość w ścieżce, która już istnieje, dokument JSON pozostanie niezmieniony:

SELECT JSON_INSERT('{"a": 1, "b": 2}', '$[0]', 3) AS 'Result';

Wynik:

+------------------+
| Result           |
+------------------+
| {"a": 1, "b": 2} |
+------------------+

Przykład 4 – Większy dokument JSON

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

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

Wynik:

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

Zobacz także JSON_ARRAY_INSERT() i JSON_ARRAY_APPEND() jeśli potrzebujesz wstawić lub dołączyć dane do tablicy JSON.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hibernate 5:- org.hibernate.MappingException:Nieznana jednostka

  2. Przedstawiamy ClusterControl 1.4.1 — wydanie ProxySQL

  3. zaimplementuj zapytanie LIKE w PDO

  4. Jak chronić bazy danych MySQL przed kampaniami ransomware

  5. Znajdowanie wszystkich rodziców w tabeli mysql za pomocą pojedynczego zapytania (zapytanie rekurencyjne)