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

JSON_REPLACE() – Zamień wartości w dokumencie JSON w MySQL

W MySQL JSON_REPLACE() funkcja zastępuje wartości w dokumencie JSON i zwraca wynik.

Jako pierwszy argument podajesz dokument JSON, po którym następuje ścieżka do zastąpienia danych, a następnie wartość, którą chcesz zastąpić istniejącą wartość.

W razie potrzeby możesz zastąpić dane w wielu miejscach w dokumencie. Aby to zrobić, po prostu podaj wiele par ścieżka/wartość zgodnie z wymaganiami.

Składnia

Składnia wygląda tak:

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

Gdzie json_doc jest dokumentem JSON, path jest ścieżką do zastąpienia danych, a val to nowa wartość zastępująca istniejącą.

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.

Jeśli para ścieżka/wartość nie istnieje w dokumencie JSON, jest ignorowana i nie ma żadnego efektu.

Pierwszy argument musi być prawidłowym dokumentem JSON, w przeciwnym razie wystąpi błąd.

Również path argument musi być prawidłowym wyrażeniem ścieżki i nie może zawierać * lub ** symbol wieloznaczny, w przeciwnym razie wystąpi błąd.

Przykład 1 – Podstawowe użycie

Oto przykład do zademonstrowania.

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

Wynik:

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

W tym przypadku zastąpiliśmy b wartość z 9 . Dzieje się tak, ponieważ określiliśmy $.b jako drugi argument i 9 jako trzeci.

Oto kolejny przykład:

SELECT 
  JSON_REPLACE('{"Name": "Bart", "Age": 10}', '$.Name', 'Nelson - Ha Ha!') AS 'Result';

Wynik:

+----------------------------------------+
| Result                                 |
+----------------------------------------+
| {"Age": 10, "Name": "Nelson - Ha Ha!"} |
+----------------------------------------+

Przykład 2 – Nieistniejąca ścieżka

Jeśli określisz ścieżkę, która nie istnieje, nic nie zostanie usunięte. Oryginalny dokument JSON jest zwracany bez modyfikacji.

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

Wynik:

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

Przykład 3 – Tablice

Oto przykład użycia tablicy.

SELECT JSON_REPLACE('[1, 2, 3]', '$[0]', 9) AS 'Result';

Wynik:

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

Tablice używają numeracji od zera, więc w tym przypadku pierwszy element jest zastępowany.

Oto kolejny przykład tablicy. Tym razem zastępujemy wartość w zagnieżdżonej tablicy.

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

Wynik:

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

Przykład 4 – Wiele ścieżek

Możesz określić więcej niż jedną ścieżkę, aby zastąpić dane w wielu miejscach w dokumencie JSON.

Podstawowy przykład:

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

Wynik:

+------------------+
| Result           |
+------------------+
| [1, 9, 3, 22, 5] |
+------------------+

Przykład 5 – Większy dokument JSON

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

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

Wynik:

+--------------------------------------------------------------------------------+
| Result                                                                         |
+--------------------------------------------------------------------------------+
| {"Person": {"Age": 10, "Name": "Bart", "Hobbies": ["Eating", "Base Jumping"]}} |
+--------------------------------------------------------------------------------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wyjątek w głównym wątku java.sql.SQLException:Odmowa dostępu dla użytkownika „@”localhost” (przy użyciu hasła:NIE)

  2. Skonfiguruj bazę danych i utwórz użytkownika tylko do odczytu w AWS Redshift i Mysql

  3. Jakie są różnice między utf8_general_ci a utf8_unicode_ci?

  4. Jak sprawdzić rozmiar wszystkich tabel w bazie danych w MySQL?

  5. Unikanie pojedynczego cudzysłowu w PHP podczas wstawiania do MySQL