Počínaje verzí SQLite 3.38.0 (vydanou 22. února 2022) nyní můžeme používat -> a ->> operátory k extrahování dílčích komponent dokumentů JSON.
Cílem těchto operátorů je být kompatibilní s ekvivalentními operátory MySQL a PostgreSQL.
Počínaje SQLite 3.38.0 jsou nyní vestavěné funkce JSON. Proto již není nutné používat -DSQLITE_ENABLE_JSON1 možnost kompilace pro povolení podpory JSON.
Syntaxe
Způsob fungování těchto operátorů je následující:
json -> path
json ->> path
Kde json je dokument JSON a path je cesta, kterou z něj chceme extrahovat.
Nalevo od operátoru tedy poskytneme dokument JSON a napravo od něj určíme cestu, kterou chceme extrahovat.
Rozdíl mezi těmito operátory je následující:
->operátor vždy vrací JSON reprezentaci zadané dílčí komponenty->>operátor vždy vrací SQL reprezentaci zadané dílčí komponenty
Příklad -> Operátor
Zde je jednoduchý příklad, který ukazuje, jak -> operátor funguje:
SELECT '{ "name" : "Wag", "type" : "Dog" }' -> '$'; Výsledek:
{"name":"Wag","type":"Dog"}
V tomto případě jsem zadal cestu '$' který vrátí celý dokument.
Uvedeme jinou cestu:
SELECT '{ "name" : "Wag", "type" : "Dog" }' -> '$.type'; Výsledek:
"Dog"
Můžeme to udělat také takto:
SELECT '{ "name" : "Wag", "type" : "Dog" }' -> 'type'; Výsledek:
"Dog"
Příklad ->> Operátor
Zde je to, co se stane, když použijeme ->> místo toho:
SELECT '{ "name" : "Wag", "type" : "Dog" }' ->> '$.type'; Výsledek:
Dog
Hodnota není uvedena jako dříve. To proto, že -> vrátí JSON reprezentaci dílčí komponenty a ->> vrátí reprezentaci SQL.
->> Operátor vrátí hodnotu SQL TEXT, INTEGER, REAL nebo NULL, která představuje vybranou dílčí komponentu, nebo NULL, pokud dílčí komponenta neexistuje.
Zde je příklad s polem:
SELECT '{ "scores" : [ 9, 7, 5 ] }' ->> '$.scores[2]'; Výsledek:
5
Pokud se hodnota skládá pouze z pole, můžeme provést toto:
SELECT '[ 9, 7, 5 ]' ->> '2'; Výsledek:
5
To vrátí prvek pole na zadaném indexu (v tomto případě 2).
Pole jsou založeny na nule (počítání začíná na 0 ), a proto 2 vrátí třetí položku.