sql >> Databáze >  >> RDS >> SQLite

Operátory pro extrahování dílčích komponent JSON

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.


  1. Vzdálená připojení Mysql Ubuntu

  2. Jak nainstalovat Nextcloud 15 na Ubuntu 18.04

  3. Rozdělení řetězce do více řádků v Oracle

  4. Jak skrýt dekoraci sady výsledků ve výstupu Psql