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

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

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

Синтаксис

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

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

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

Пример

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

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

SELECT JSON_ARRAY_APPEND(@json_doc, '$', 4);

Резултат:

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

В този случай стойността 4 беше добавен в края на масива.

Добавяне на множество стойности

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

Пример:

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

SELECT JSON_ARRAY_APPEND(@json_doc, '$', 4, '$', 5);

Резултат:

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

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

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

Пример:

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

SELECT JSON_ARRAY_APPEND(@json_doc, '$.a', 4, '$.b', 5);

Резултат:

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

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

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

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

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

Резултат:

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

И в следващия пример оригиналният JSON документ не съдържа вложен масив, а JSON_ARRAY_APPEND() създава вложен масив въз основа на нашия път:

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

SELECT JSON_ARRAY_APPEND(@json_doc, '$[3]', 4);

Резултат:

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

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

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

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

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

Резултат:

{
    "pet": 
    {
        "name": "Fluffy",
        "diet": 
        [
            "Fish",
            "Chicken",
            "Water"
        ]
    }
}

И ето един, който създава вложен масив:

SET @json_doc = '{  
    "pet": {    
       "name": "Scratch", 
       "diet": ["Beef", "Water"]
    }
 }';
SELECT JSON_DETAILED(
        JSON_ARRAY_APPEND(
            @json_doc, 
            '$.pet.diet[1]', 
            'Beer')
);

Резултат:

{
    "pet": 
    {
        "name": "Scratch",
        "diet": 
        [
            "Beef",
            
            [
                "Water",
                "Beer"
            ]
        ]
    }
}

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

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

SELECT JSON_ARRAY_APPEND(null, '$', 4);

Резултат:

+---------------------------------+
| JSON_ARRAY_APPEND(null, '$', 4) |
+---------------------------------+
| NULL                            |
+---------------------------------+

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

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

SELECT JSON_ARRAY_APPEND(@json_doc, null, 4);

Резултат:

+---------------------------------------+
| JSON_ARRAY_APPEND(@json_doc, null, 4) |
+---------------------------------------+
| NULL                                  |
+---------------------------------------+

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

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

SELECT JSON_ARRAY_APPEND(@json_doc, '$', null);

Резултат:

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

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


  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 срещу MariaDB срещу Percona Server:Сравнение на функциите за сигурност

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

  3. Как RTRIM() работи в MariaDB

  4. MariaDB JSON_ARRAY_APPEND() Обяснено

  5. Съвети и трик за използване на регистриране на одит за MariaDB