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

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

В MySQL, JSON_ARRAY_INSERT() функцията се използва за вмъкване на нова стойност в масив.

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

Синтаксис

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

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

Къде:

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

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

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

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

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

Резултат:

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

Така че третият аргумент се вмъква в масива по посочения път. В този случай използвам $[1] за пътя, който се отнася до втория елемент (JSON масивите използват номериране на база нула – номерирането започва от 0 ).

Пример 2 – Вложен масив

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

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

Резултат:

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

Така че тук използвам $[2][1] като пътеката. [2] се отнася до 3-тия елемент от външния масив. [1] се отнася до 2-ри елемент от вложения масив.

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

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

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

Резултат:

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


  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 репликация и отказване, базирано на GTID - дълбоко потапяне в грешни транзакции

  2. Генериране на дърво на базата на дълбочина от йерархични данни в MySQL (без CTEs)

  3. Как да вмъкнете данни от една таблица на база данни в друга таблица на база данни в Mysql

  4. Как да предоставим разрешения за отдалечен достъп до mysql сървър за потребител?

  5. Оптимизиране на MySQL търсене с използване на харесвания и заместващи знаци