Mysql
 sql >> база данни >  >> RDS >> Mysql

JSON_SET() – Вмъкване или актуализиране на стойности в JSON документ в MySQL

В MySQL, JSON_SET() функцията вмъква или актуализира стойности в JSON документ и връща резултата.

Предоставяте документа JSON като първи аргумент, последван от пътя за вмъкване, последван от стойността за вмъкване. Можете да предоставите няколко двойки път/стойност, ако трябва да актуализирате няколко стойности.

Синтаксис

Синтаксисът е така:

JSON_SET(json_doc, път, val[, път, val] ...)

Къде:

  • json_doc е JSON документът.
  • path е пътят на елемента, за който да се вмъкнат данни или да се актуализира стойността в.
  • val е новата стойност.

Двойките път-стойност се оценяват отляво надясно. Документът, създаден чрез оценка на една двойка, става новата стойност, спрямо която се оценява следващата двойка.

Възниква грешка, ако първият аргумент не е валиден JSON документ или ако някой аргумент за път не е валиден израз за път или съдържа * или ** заместващ знак.

Пример 1 – Вмъкване на стойност

Ето пример, за да демонстрирате как да вмъкнете стойност с помощта на тази функция.

SELECT JSON_SET('{"a":1, "b":2}', '$.c', 3) КАТО 'Резултат';

Резултат:

+-------------------------+| Резултат |+-------------------------+| {"a":1, "b":2, "c":3} |+--------------------------+ 

В този случай третият аргумент се вмъква в масива по посочения път. Използвам $.c за пътя и 3 за стойността, която трябва да се вмъкне. Това води до двойка ключ/стойност от "c": 3 .

Ето още един пример:

SELECT JSON_SET('{"Име":"Homer", "Пол":"Мъж"}', '$.Age', 39) КАТО 'Резултат';

Резултат:

+------------------------------------------------------- --+| Резултат |+-------------------------------------------------------- -+| {"Възраст":39, "Име":"Омир", "Пол":"Мъж"} |+------------------------- -----------------------+

Пример 2 – Актуализиране на стойност

Предишният пример беше вмъкнал стойност. Този пример актуализира съществуваща стойност.

SELECT JSON_SET('{"a":1, "b":2}', '$.b', 3) КАТО 'Резултат';

Резултат:

+-----------------+| Резултат |+------------------+| {"a":1, "b":3} |+-----------------+

Ето още един пример:

SELECT JSON_SET('{"Име":"Хомър", "Пол":"Мъж"}', '$.Name', "Барт") КАТО 'Резултат';

Резултат:

+----------------------------------+| Резултат |+----------------------------------+| {"Име":"Барт", "Пол":"Мъж"} |+------------------------------ -----+

Пример 3 – Масиви

Можете да вмъквате стойности в масив, като използвате път след края на съществуващия масив. Пример:

SELECT JSON_SET('[1, 2, 3]', '$[3]', 4) КАТО 'Резултат';

Резултат:

+--------------+| Резултат |+--------------+| [1, 2, 3, 4] |+--------------+

Ако обаче използвате път, който вече съществува в масива, стойността ще бъде актуализирана:

SELECT JSON_SET('[1, 2, 3]', '$[1]', 4) КАТО 'Резултат';

Резултат:

+-----------+| Резултат |+-----------+| [1, 4, 3] |+----------+

Ако съществуващата стойност не е масив, тя се обвива автоматично като масив, след което се разширява с новата стойност. Пример:

SELECT JSON_SET('{"a":1, "b":2}', '$[2]', 3) КАТО 'Резултат';

Резултат:

<пред>+-----------------------+| Резултат |+-----------------------+| [{"a":1, "b":2}, 3] |+-----------------------+

Пример 4 – Множество стойности

Можете да вмъквате/актуализирате няколко стойности наведнъж. Просто добавете всяка двойка ключ/стойност, разделена със запетая. Пример:

SELECT JSON_SET('{"a":1, "b":2, "c":3}', '$.a', 9, '$.c', 'Bart') КАТО 'Резултат';

Резултат:

+-------------------------------+| Резултат |+-------------------------------+| {"a":9, "b":2, "c":"Барт"} |+-------------------------- ----+

Пример 5 – По-голям JSON документ

Ето пример с (малко) по-голям JSON документ.

SET @data ='{ "Person":{ "Име":"Homer", "Хобита":["Хранене", "Спане"] } }';SELECT JSON_SET(@data, '$.Person. Име“, „Барт“, „$.Person.Hobbies[1]“, „Пакост“) КАТО „Резултат“;

Резултат:

+------------------------------------------------------- -------------------+| Резултат |+-------------------------------------------------------- ------------------+| {"Person":{"Име":"Барт", "Хобита":["Хранене", "Пакости"]}} |+------------------- -------------------------------------------------------+

Вижте също JSON_INSERT() за вмъкване на стойности без замяна на съществуващи стойности и JSON_REPLACE() за замяна само на съществуващи стойности.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Какъв е еквивалентът на LEN() в MySQL?

  2. Как да импортирате и експортирате база данни чрез SSH

  3. Заявката за изтриване не работи в mysql

  4. Наблюдение на вашите бази данни с MySQL Enterprise Monitor

  5. Navicat за MySQL