sql >> Databasteknik >  >> RDS >> MariaDB

MariaDB JSON_ARRAY_INSERT() Förklarad

I MariaDB, JSON_ARRAY_INSERT() är en inbyggd funktion som infogar ett värde i ett JSON-dokument och returnerar resultatet.

Syntax

Syntaxen ser ut så här:

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

Där json_doc är JSON-dokumentet, path är sökvägen dit du vill infoga värdet/värdena och value är värdet som ska infogas.

Exempel

Här är ett exempel att visa.

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

Resultat:

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

I det här fallet är värdet 3 infogades i arrayen vid position 1 . Matriser är nollbaserade, så det blir det andra elementet i matrisen.

Infoga flera värden

Du kan infoga flera värden inom ett enda anrop till JSON_ARRAY_INSERT() .

Exempel:

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

Resultat:

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

Utvärdering utförs från vänster till höger.

Här är vad som händer om vi byter path /value argument kring:

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

Resultat:

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

Flera matriser

Du kan infoga värden i mer än en array inom samma anrop till JSON_ARRAY_INSERT() .

Exempel:

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

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

Resultat:

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

Inkapslade arrayer

Här är ett exempel på att infoga ett värde i en kapslad array:

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

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

Resultat:

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

Större JSON-dokument

Här är ett exempel med ett lite större JSON-dokument.

Jag använder också JSON_DETAILED() för att försköna resultatet:

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

Resultat:

{ "pet":{ "name":"Fluffig", "diet":[ "Fisk", "Kyckling", "Vatten" ] }}

Nollargument

Om det första argumentet är NULL , resultatet är NULL :

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

Resultat:

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

Detsamma gäller för path argument:

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

Resultat:

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

Men om value argumentet är NULL , sedan NULL infogas i arrayen:

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

Resultat:

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

Du kan också använda JSON_ARRAY_APPEND() för att lägga till värden till en array.


  1. hur man beräknar saldon i ett bokföringsprogram med postgres fönsterfunktion

  2. UUID-prestanda i MySQL?

  3. MySQL Infoga i Select

  4. Använda SQL Server lagrade procedurer från Python (pyodbc)