sql >> Database >  >> RDS >> SQLite

Operators voor het extraheren van JSON-subcomponenten

Vanaf SQLite versie 3.38.0 (uitgebracht op 22 februari 2022), kunnen we nu de -> gebruiken en ->> operators om subcomponenten van JSON-documenten te extraheren.

Het doel van deze operators is om compatibel te zijn met de equivalente MySQL- en PostgreSQL-operators.

Vanaf SQLite 3.38.0 zijn de JSON-functies nu ook ingebouwd. Daarom is het niet langer nodig om de -DSQLITE_ENABLE_JSON1 te gebruiken compile-time optie om JSON-ondersteuning in te schakelen.

Syntaxis

De manier waarop deze operators werken is als volgt:

json -> path
json ->> path

Waar json is het JSON-document en path is het pad dat we eruit willen halen.

We bieden dus een JSON-document aan de linkerkant van de operator, en we specificeren het pad dat we rechts ervan willen extraheren.

Het verschil tussen deze operators gaat als volgt:

  • De -> operator retourneert altijd een JSON-representatie van de opgegeven subcomponent
  • De ->> operator retourneert altijd een SQL-representatie van de gespecificeerde subcomponent

Voorbeeld van de -> Operator

Hier is een eenvoudig voorbeeld om te demonstreren hoe de -> operator werkt:

SELECT '{ "name" : "Wag", "type" : "Dog" }' -> '$';

Resultaat:

{"name":"Wag","type":"Dog"}

In dit geval heb ik een pad gespecificeerd van '$' die het hele document retourneert.

Laten we een ander pad specificeren:

SELECT '{ "name" : "Wag", "type" : "Dog" }' -> '$.type';

Resultaat:

"Dog"

We kunnen het ook zo doen:

SELECT '{ "name" : "Wag", "type" : "Dog" }' -> 'type';

Resultaat:

"Dog"

Voorbeeld van de ->> Operator

Dit is wat er gebeurt als we ->> gebruiken in plaats daarvan:

SELECT '{ "name" : "Wag", "type" : "Dog" }' ->> '$.type';

Resultaat:

Dog

De waarde wordt niet geciteerd zoals voorheen. Dat komt omdat -> retourneert een JSON-representatie van de subcomponent en ->> retourneert een SQL-representatie.

De ->> operator retourneert een SQL TEXT, INTEGER, REAL of NULL-waarde die de geselecteerde subcomponent vertegenwoordigt, of NULL als de subcomponent niet bestaat.

Hier is een voorbeeld met een array:

SELECT '{ "scores" : [ 9, 7, 5 ] }' ->> '$.scores[2]';

Resultaat:

5

Als de waarde uitsluitend uit een array bestaat, kunnen we dit doen:

SELECT '[ 9, 7, 5 ]' ->> '2';

Resultaat:

5

Dat geeft het array-element terug met de opgegeven index (in dit geval 2).

Arrays zijn gebaseerd op nul (tellen begint bij 0 ), en daarom 2 geeft het derde item terug.


  1. Het gelijktijdige verzoek afhandelen terwijl u in de Oracle-database blijft?

  2. VLDB's in de 20-tieners:je hebt een grotere nodig ...

  3. Hoe Kubernetes te installeren met Kubeadm

  4. Controleer of een object een opgeslagen procedure is met behulp van OBJECTPROPERTY() in SQL Server