sql >> Database teknologi >  >> RDS >> MariaDB

MariaDB JSON_ARRAY_INSERT() Forklaret

I MariaDB, JSON_ARRAY_INSERT() er en indbygget funktion, der indsætter en værdi i et JSON-dokument og returnerer resultatet.

Syntaks

Syntaksen ser sådan ud:

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

Hvor json_doc er JSON-dokumentet, path er stien til hvor du vil indsætte værdien/værdierne og value er værdien, der skal indsættes.

Eksempel

Her er et eksempel til at demonstrere.

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

Resultat:

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

I dette tilfælde værdien 3 blev indsat i arrayet på position 1 . Arrays er nulbaserede, så det bliver det andet element i arrayet.

Indsæt flere værdier

Du kan indsætte flere værdier inden for et enkelt kald til JSON_ARRAY_INSERT() .

Eksempel:

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] |+--------------------------------------------- ------------------+

Evaluering udføres fra venstre mod højre.

Her er, hvad der sker, hvis vi skifter path /value argumenter omkring:

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] |+-------------------------------------------- ------------------+

Flere arrays

Du kan indsætte værdier i mere end én matrix inden for samme opkald til JSON_ARRAY_INSERT() .

Eksempel:

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]} |+---------------------- ----------------------------------+

Indlejrede arrays

Her er et eksempel på indsættelse af en værdi i et indlejret 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

Her er et eksempel med et lidt større JSON-dokument.

Jeg bruger også JSON_DETAILED() for at forskønne resultatet:

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

Resultat:

{ "kæledyr":{ "name":"Fluffy", "diæt":[ "Fisk", "Kylling", "Vand" ] }}

Nul-argumenter

Hvis det første argument er NULL , resultatet er NULL :

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

Resultat:

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

Det samme gælder for path argument:

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

Resultat:

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

Men hvis value argumentet er NULL , derefter NULL er indsat i arrayet:

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

Resultat:

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

Du kan også bruge JSON_ARRAY_APPEND() for at tilføje værdier til en matrix.


  1. Sådan får du alder i år, måneder og dage ved at bruge Oracle

  2. SQL INSERT uden at angive kolonner. Hvad der sker?

  3. Oracle - Hvordan får jeg den faktiske størrelse af en specifik RÆKKE?

  4. ændre tabel drop kolonne i Oracle database