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

JSON_SET() – Wstaw lub zaktualizuj wartości w dokumencie JSON w MySQL

W MySQL JSON_SET() funkcja wstawia lub aktualizuje wartości w dokumencie JSON i zwraca wynik.

Jako pierwszy argument podajesz dokument JSON, po którym następuje ścieżka do wstawienia, a po niej wartość do wstawienia. Możesz podać wiele par ścieżka/wartość, jeśli chcesz zaktualizować wiele wartości.

Składnia

Składnia wygląda tak:

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

Gdzie:

  • json_doc jest dokumentem JSON.
  • path jest ścieżką elementu, dla którego należy wstawić dane lub zaktualizować wartość.
  • val to nowa wartość.

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.

Błąd występuje, jeśli pierwszy argument nie jest prawidłowym dokumentem JSON lub jeśli dowolny argument ścieżki nie jest prawidłowym wyrażeniem ścieżki lub zawiera * lub ** symbol wieloznaczny.

Przykład 1 – Wstaw wartość

Oto przykład pokazujący, jak wstawić wartość za pomocą tej funkcji.

SELECT JSON_SET('{"a": 1, "b": 2}', '$.c', 3) AS 'Result';

Wynik:

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

W takim przypadku trzeci argument jest wstawiany do tablicy w określonej ścieżce. 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_SET('{"Name": "Homer", "Gender": "Male"}', '$.Age', 39) AS 'Result';

Wynik:

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

Przykład 2 – Aktualizacja wartości

W poprzednim przykładzie wstawiono wartość. Ten przykład aktualizuje istniejącą wartość.

SELECT JSON_SET('{"a": 1, "b": 2}', '$.b', 3) AS 'Result';

Wynik:

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

Oto kolejny przykład:

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

Wynik:

+------------------------------------+
| Result                             |
+------------------------------------+
| {"Name": "Bart", "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_SET('[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, wartość zostanie zaktualizowana:

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

Wynik:

+-----------+
| Result    |
+-----------+
| [1, 4, 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_SET('{"a": 1, "b": 2}', '$[2]', 3) AS 'Result';

Wynik:

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

Przykład 4 – Wiele wartości

Możesz wstawić/zaktualizować wiele wartości jednocześnie. Po prostu dodaj każdą parę klucz/wartość oddzieloną przecinkiem. Przykład:

SELECT JSON_SET('{"a": 1, "b": 2, "c": 3}', '$.a', 9, '$.c', 'Bart') AS 'Result';

Wynik:

+-------------------------------+
| Result                        |
+-------------------------------+
| {"a": 9, "b": 2, "c": "Bart"} |
+-------------------------------+

Przykład 5 – Większy dokument JSON

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

SET @data = '{  
    "Person": {    
       "Name": "Homer", 
       "Hobbies": ["Eating", "Sleeping"]  
    }
 }';
SELECT JSON_SET(@data, '$.Person.Name', 'Bart', '$.Person.Hobbies[1]', "Mischief") AS 'Result';

Wynik:

+-----------------------------------------------------------------+
| Result                                                          |
+-----------------------------------------------------------------+
| {"Person": {"Name": "Bart", "Hobbies": ["Eating", "Mischief"]}} |
+-----------------------------------------------------------------+

Zobacz także JSON_INSERT() do wstawiania wartości bez zastępowania istniejących wartości oraz JSON_REPLACE() do zastępowania tylko istniejących wartości.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Korzystanie z widoków MySQL

  2. Jak używać zmiennej zdefiniowanej przez użytkownika MySql w .NET MySqlCommand?

  3. Przykłady ASCII() – MySQL

  4. 4 sposoby sprawdzenia typu danych kolumny w MySQL

  5. Warunkowa transformacja podziału:eksport danych z serwera SQL do baz danych Oracle i MySQL