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

MariaDB JSON_ARRAY_INSERT() Обяснено

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

Синтаксис

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

JSON_ARRAY_INSERT(json_doc, path, value[, path, value] ...) 

Където json_doc е JSON документът, path е пътят до мястото, където искате да вмъкнете стойността/ите и value е стойността за вмъкване.

Пример

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

SELECT JSON_ARRAY_INSERT('[0, 1, 2]', '$[1]', 3); 

Резултат:

+------------------------------------+| JSON_ARRAY_INSERT('[0, 1, 2]', '$[1]', 3) |+-------------------------- ----------------+| [0, 3, 1, 2] |+------------------------------------------------ ----+

В този случай стойността 3 беше вмъкнат в масива на позиция 1 . Масивите са базирани на нула, така че става вторият елемент в масива.

Вмъкване на множество стойности

Можете да вмъкнете множество стойности в рамките на едно извикване към JSON_ARRAY_INSERT() .

Пример:

SELECT JSON_ARRAY_INSERT('[0, 1, 2]', '$[0]', 4, '$[2]', 5); 

Резултат:

+------------------------------------------------------- --------+| JSON_ARRAY_INSERT('[0, 1, 2]', '$[0]', 4, '$[2]', 5) |+------------------ ------------------------------------+| [4, 0, 5, 1, 2] |+---------------------------------------------- -----------------+

Оценката се извършва отляво надясно.

Ето какво се случва, ако превключим path /value аргументи около:

SELECT JSON_ARRAY_INSERT('[0, 1, 2]', '$[2]', 5, '$[0]', 4); 

Резултат:

+------------------------------------------------------- --------+| JSON_ARRAY_INSERT('[0, 1, 2]', '$[2]', 5, '$[0]', 4) |+------------------ ------------------------------------+| [4, 0, 1, 5, 2] |+---------------------------------------------- -----------------+

Множество масива

Можете да вмъквате стойности в повече от един масив в рамките на едно и също извикване на JSON_ARRAY_INSERT() .

Пример:

SET @json_doc = '{"a": [0, 1], "b": [2, 3]}';

SELECT JSON_ARRAY_INSERT(@json_doc, '$.a[1]', 4, '$.b[2]', 5); 

Резултат:

+------------------------------------------------------- ----------+| JSON_ARRAY_INSERT(@json_doc, '$.a[1]', 4, '$.b[2]', 5) |+--------------------- ----------------------------------+| {"a":[0, 4, 1], "b":[2, 3, 5]} |+----------------------- ---------------------------------+

Вложени масиви

Ето пример за вмъкване на стойност във вложен масив:

SET @json_doc = '[0, 1, [2, 3]]';

SELECT JSON_ARRAY_INSERT(@json_doc, '$[2][1]', 4); 

Резултат:

+----------------------------------------------+| JSON_ARRAY_INSERT(@json_doc, '$[2][1]', 4) |+------------------------------ ------------+| [0, 1, [2, 4, 3]] |+--------------------------------------- ---------+

По-голям JSON документ

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

Аз също използвам JSON_DETAILED() за преобразяване на резултата:

SET @json_doc = '{  
    "pet": {    
       "name": "Fluffy", 
       "diet": ["Fish", "Water"]  
    }
 }';
SELECT JSON_DETAILED(
        JSON_ARRAY_INSERT(
            @json_doc, 
            '$.pet.diet[1]', 
            'Chicken')
); 

Резултат:

{ "pet":{ "name":"Fluffy", "diet":[ "Риба", "Пиле", "Вода" ] }}

Нулеви аргументи

Ако първият аргумент е NULL , резултатът е NULL :

SELECT JSON_ARRAY_INSERT(null, '$[1]', 4); 

Резултат:

+----------------------------------+| JSON_ARRAY_INSERT(null, '$[1]', 4) |+---------------------------------- -+| NULL |+------------------------------------+

Същото важи и за path аргумент:

SELECT JSON_ARRAY_INSERT('[0, 1, 2, 3]', null, 4); 

Резултат:

+----------------------------------------------+| JSON_ARRAY_INSERT('[0, 1, 2, 3]', null, 4) |+------------------------------ --------------+| NULL |+-----------------------------------------------------+ 

Ако обаче value аргументът е NULL , след това NULL се вмъква в масива:

SELECT JSON_ARRAY_INSERT('[0, 1, 2]', '$[1]', null); 

Резултат:

+------------------------------------------------------- +| JSON_ARRAY_INSERT('[0, 1, 2]', '$[1]', null) |+-------------------------- -------------------+| [0, нула, 1, 2] |+------------------------------------------------ -------+

Можете също да използвате JSON_ARRAY_APPEND() за добавяне на стойности към масив.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Архивиране на база данни - Сравняване на MariaDB Mariabackup и Percona Xtrabackup

  2. Как работи WEEK() в MariaDB

  3. MariaDB JSON_TABLE() Обяснено

  4. Използване на MySQL Galera Cluster Replication за създаване на гео-разпределен клъстер:Част втора

  5. Как ATAN2() работи в MariaDB