sql >> Databasteknik >  >> RDS >> SQLite

SQLite JSON_PATCH()

I SQLite, json_patch() funktionen kan användas för att lägga till, ändra eller ta bort element i ett JSON-objekt.

För att göra detta kör den RFC-7396 MergePatch-algoritmen för att applicera en given patch mot den givna JSON-ingången.

Vi skickar den ursprungliga JSON som det första argumentet när vi anropar funktionen, följt av patchen. Funktionen tillämpar sedan den patchen mot JSON i det första argumentet.

Syntax

Syntaxen ser ut så här:

json_patch(T,P)

Där T representerar den ursprungliga JSON och P är plåstret. Funktionen tillämpar patch P mot T .

Innehållet i den medföljande patchen P jämförs med det aktuella innehållet i JSON-måldokumentet T . Om P innehåller medlemmar som inte förekommer i T , läggs dessa medlemmar till. Om T innehåller medlemmen, ersätts värdet.

Nullvärden i P ges speciell betydelse för att indikera borttagandet av befintliga värden i T .

Exempel

Här är några exempel att visa.

Infoga

SELECT json_patch('{ "name" : "Fluffy" }', '{ "age" : 10 }');

Resultat:

{"name":"Fluffy","age":10}

Att försöka infoga en ny medlem med ett nullvärde fungerar inte:

SELECT json_patch('{ "name" : "Fluffy" }', '{ "age" : null }');

Resultat:

{"name":"Fluffy"}

Nullvärden används faktiskt för att ta bort medlemmar från JSON (som ses i ett senare exempel).

Uppdatera

SELECT json_patch('{ "name" : "Fluffy" }', '{ "name" : "Baldy" }');

Resultat:

{"name":"Baldy"}

Om det finns flera nyckel-/värdepar, men vi bara vill uppdatera ett, behöver vi bara ange det i vårt andra argument:

SELECT json_patch('{ "name" : "Fluffy", "age" : 10 }', '{ "name" : "Baldy" }');

Resultat:

{"name":"Baldy","age":10}

Samma koncept gäller när du uppdaterar flera nyckel-/värdepar – vi behöver bara ange dessa:

SELECT json_patch('{ 
        "name" : "Fluffy",
        "type" : "Cat",
        "age" : 10 
    }', 
    '{ 
        "name" : "Baldy",
        "age" : 11
    }'
);

Resultat:

{"name":"Baldy","type":"Cat","age":11}

Uppdatera och infoga

SELECT json_patch('{ "name" : "Fluffy" }', '{ "name" : "Baldy", "age" : 10 }');

Resultat:

{"name":"Baldy","age":10}

Ta bort/ta bort

Nullvärden i sammanslagningskorrigeringen ges speciell betydelse för att indikera borttagandet av befintliga värden i målet:

SELECT json_patch('{ "name" : "Fluffy", "age" : 10 }', '{ "age" : null }');

Resultat:

{"name":"Fluffy"}

Arrayer

json_patch() Funktionen kan inte lägga till element i en array eller modifiera enskilda element i en array. Den kan bara infoga, ersätta eller ta bort hela arrayen som en enda enhet.

Så här är ett exempel på att lägga till ett element till en array:

SELECT json_patch('[ 1, 2, 3 ]', '[ 1, 2, 3, 4 ]');

Resultat:

[1,2,3,4]

Jag var tvungen att ersätta den ursprungliga arrayen med en helt ny. Så tekniskt sett har jag faktiskt inte lagt till någonting – jag ersatte helt enkelt hela arrayen med en annan.

Samma koncept gäller om arrayen är inom ett objekt:

SELECT json_patch('{ "scores" : [ 1, 2, 3 ] }', '{ "scores" : [ 1, 2, 3, 4 ] }');

Resultat:

{"scores":[1,2,3,4]}

Om du behöver arbeta med arrayer, prova funktioner som json_set() , json_insert() , json_remove() och json_replace() istället.

Ersätt ett objekt med en array

Vi kan ersätta objekt med en array genom att helt enkelt tillhandahålla en array som patch:

SELECT json_patch('{ "name" : "Fluffy", "age" : 10 }', '[ "Fluffy", 10 ]');

Resultat:

["Fluffy",10]

Ersätt en array med ett objekt

Och det fungerar tvärtom också:

SELECT json_patch('[ "Fluffy", 10 ]', '{ "name" : "Fluffy", "age" : 10 }');

Resultat:

{"name":"Fluffy","age":10}

  1. Hur man genererar Drop Table Statement för alla tabeller i en databas - SQL Server / T-SQL Tutorial Del 48

  2. MS Access-korruption Del 1:Vanliga orsaker

  3. Dataingenjörsintervjufrågor med Python

  4. Använda aggregerade funktioner (SUM, AVG, MAX, MIN, COUNT, DISTINCT) i MySQL