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

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

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

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

Синтаксис

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

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

Къде:

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

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

Пример 1 – Основна употреба

Ето пример за демонстрация.

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

Резултат:

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

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

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

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

Резултат:

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

Пример 2 – Опит за презаписване на съществуващ път

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

Така че, ако модифицираме предишния пример, за да вмъкнем стойност в Name (което вече съществува), не се извършва вмъкване:

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

Резултат:

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

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

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

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

Резултат:

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

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

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

Резултат:

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

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

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

Резултат:

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

Но още веднъж, ако се опитате да вмъкнете стойност в път, който вече съществува, JSON документът остава непроменен:

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

Резултат:

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

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

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

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

Резултат:

+------------------------------------------------------- ------------------------------------+| Резултат |+-------------------------------------------------------- ----------------------------------+| {"Човек":{"Име":"Омир", "Хобита":["Хранене", "Спане", "Скачане на база"]}} |+-------------- -------------------------------------------------- ------------------+

Вижте също JSON_ARRAY_INSERT() и JSON_ARRAY_APPEND() ако трябва да вмъкнете или добавите данни в 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. Пагинация с използване на MySQL LIMIT, OFFSET

  2. FROM_DAYS() Примери – MySQL

  3. Как работи функцията LPAD() в MySQL

  4. Как да разбера дали MySQLnd е активният драйвер?

  5. Как да инсталирате MySQL с phpMyAdmin на Ubuntu 14.04