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

JSON_ARRAY_APPEND() – Добавяне на стойности към JSON масив в MySQL

Когато използвате JSON документи с MySQL, можете да използвате JSON_ARRAY_APPEND() функция за добавяне на нови стойности към масив.

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

В MySQL 5.7 тази функция беше наречена JSON_APPEND() но това име вече не се поддържа.

Синтаксис

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

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

Къде:

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

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

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

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

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

Резултат:

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

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

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

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

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

Резултат:

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

Така че тук използвам $[2] като пътеката. Това определя масива при третия елемент (масивите използват номериране на базата на нула, така че броят започва от нула).

Ако все още не е имало масив в този елемент, се създава нов масив.

Като това:

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

Резултат:

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

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

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

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

Резултат:

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

И точно както в предишния пример, можем също да създадем нов, вложен масив, ако е необходимо:

SET @data = '{  
    "Person": {    
       "Name": "Homer", 
       "Hobbies": ["Eating", "Sleeping"]  
    }
 }';
SELECT JSON_ARRAY_APPEND(@data, '$.Person.Hobbies[0]', "Drinking") AS 'Result';

Резултат:

+--------------------------------------------------------------------------------+
| Result                                                                         |
+--------------------------------------------------------------------------------+
| {"Person": {"Name": "Homer", "Hobbies": [["Eating", "Drinking"], "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. SQL заявка за изтриване на база данни в MySQL

  2. Използване на .php файл за генериране на дъмп на MySQL

  3. Целочисленото поле на MySQL се връща като низ в PHP

  4. Свържете се с отдалечен MySQL сървър с SSL от PHP

  5. Разбиране на HAProxy статистиката за MySQL и PostgreSQL