sql >> Databáze >  >> RDS >> MariaDB

MariaDB JSON_ARRAY_INSERT() Vysvětleno

V MariaDB, JSON_ARRAY_INSERT() je vestavěná funkce, která vloží hodnotu do dokumentu JSON a vrátí výsledek.

Syntaxe

Syntaxe vypadá takto:

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

Kde json_doc je dokument JSON, path je cesta k místu, kam chcete vložit hodnotu/y, a value je hodnota, kterou chcete vložit.

Příklad

Zde je příklad k demonstraci.

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

Výsledek:

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

V tomto případě hodnota 3 byl vložen do pole na pozici 1 . Pole jsou založeny na nule, takže se stávají druhým prvkem v poli.

Vložit více hodnot

Do jednoho volání JSON_ARRAY_INSERT() můžete vložit více hodnot .

Příklad:

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

Výsledek:

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

Hodnocení se provádí zleva doprava.

Zde je to, co se stane, když přepneme path /value argumenty kolem:

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

Výsledek:

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

Více polí

Hodnoty můžete vložit do více než jednoho pole v rámci stejného volání JSON_ARRAY_INSERT() .

Příklad:

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

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

Výsledek:

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

Vnořená pole

Zde je příklad vložení hodnoty do vnořeného pole:

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

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

Výsledek:

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

Větší dokument JSON

Zde je příklad s mírně větším dokumentem JSON.

Také používám JSON_DETAILED() pro zkrášlení výsledku:

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

Výsledek:

{ "pet":{ "name":"Fluffy", "diet":[ "Ryby", "Kuře", "Voda" ] }}

Nulové argumenty

Pokud je první argument NULL , výsledkem je NULL :

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

Výsledek:

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

Totéž platí pro path argument:

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

Výsledek:

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

Pokud však value argument je NULL a poté NULL se vloží do pole:

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

Výsledek:

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

Můžete také použít JSON_ARRAY_APPEND() pro připojení hodnot k poli.


  1. Jak provést uloženou proceduru v MySQL Workbench

  2. sql se připojí jako Vennův diagram

  3. Sledování latence čtení/zápisu

  4. Použití ODBC se Salesforce a Azure Active Directory (AD) Single Sign On (SSO)