sql >> Databáze >  >> RDS >> MariaDB

MariaDB JSON_VALUE() vysvětleno

V MariaDB, JSON_VALUE() je vestavěná funkce, která vrací skalární hodnotu z dokumentu JSON. Přesněji řečeno, vrací skalár určený zadanou cestou.

Syntaxe

Syntaxe vypadá takto:

JSON_VALUE(json_doc, path) 

Kde json_doc je dokument JSON a path je cesta v dokumentu.

Příklad

Zde je příklad k demonstraci.

SET @json_document = '
    { 
        "name": "Wag", 
        "type": "Dog", 
        "weight": 20 
    }
';
SELECT JSON_VALUE(@json_document, '$.name'); 

Výsledek:

+--------------------------------------+| JSON_VALUE(@json_document, '$.name') |+------------------------------------- -+| Wag |+--------------------------------------+

Neexistující cesta

Předání cesty, která v dokumentu JSON neexistuje, má za následek NULL .

Příklad:

SET @json_document = '
    { 
        "name": "Wag", 
        "type": "Dog", 
        "weight": 20 
    }
';
SELECT JSON_VALUE(@json_document, '$.color'); 

Výsledek:

+---------------------------------------+| JSON_VALUE(@json_document, '$.color') |+------------------------------------- --+| NULL |+---------------------------------------+

Pole

Zde je příklad vrácení dat z pole:

SET @json_document = '
    { 
        "_id" : 1, 
        "awards" : [ "Top Dog", "Best Dog", "Biggest Dog" ] 
    }
';
SELECT JSON_VALUE(@json_document, '$.awards[1]'); 

Výsledek:

+-------------------------------------------+| JSON_VALUE(@json_document, '$.awards[1]') |+---------------------------------- ---------+| Nejlepší pes |+-------------------------------------------+ 

Pole jsou založeny na nule, a proto $.awards[1] extrahuje druhý prvek z awards pole.

Vnořené objekty

Zde je příklad získání hodnoty z objektu vnořeného do jiného objektu:

SET @json_document = '
    { 
        "_id" : 1, 
        "name" : "Wag", 
        "details" : {
            "type" : "Dog", 
            "weight" : 20,
            "awards" : { 
                "Florida Dog Awards" : "Top Dog", 
                "New York Marathon" : "Fastest Dog", 
                "Sumo 2020" : "Biggest Dog"
            }
        }
    }
';
SELECT JSON_VALUE(
    @json_document, 
    '$.details.awards.Florida Dog Awards'
    ) AS Result; 

Výsledek:

+----------+| Výsledek |+----------+| Top Dog |+---------+

Neskalární hodnoty

Pokus o vrácení neskalární hodnoty (např. objekt nebo pole) vrátí NULL .

Příklad:

SET @json_document = '
    { 
        "_id" : 1, 
        "name" : "Wag", 
        "details" : {
            "type" : "Dog", 
            "weight" : 20,
            "awards" : { 
                "Florida Dog Awards" : "Top Dog", 
                "New York Marathon" : "Fastest Dog", 
                "Sumo 2020" : "Biggest Dog"
            }
        }
    }
';
SELECT JSON_VALUE(
    @json_document, 
    '$.details.awards'
    ) AS Result; 

Výsledek:

+---------+| Výsledek |+--------+| NULL |+--------+

Chcete-li vrátit neskalární hodnotu, použijte JSON_QUERY() nebo JSON_EXTRACT() funkce.

Nulové argumenty

Pokud je některý argument NULL , výsledkem je NULL :

SELECT 
    JSON_VALUE(null, '$.type'),
    JSON_VALUE('{"a":1}', null); 

Výsledek:

+----------------------------+----------------- ------------+| JSON_VALUE(null, '$.type') | JSON_VALUE('{"a":1}', null) |+----------------------------+----- -------------------------+| NULL | NULL |+----------------------------+------------------ -----------+

Nesprávný počet parametrů

Pokud neposkytnete žádné argumenty, dojde k chybě:

SELECT JSON_VALUE(); 

Výsledek:

CHYBA 1582 (42000):Nesprávný počet parametrů ve volání nativní funkce 'JSON_VALUE'

Je to stejné, když poskytnete příliš málo nebo příliš mnoho argumentů:

SELECT JSON_VALUE('{ "a": 1}'); 

Výsledek:

CHYBA 1582 (42000):Nesprávný počet parametrů ve volání nativní funkce 'JSON_VALUE'

  1. Jak zjistit, zda je vypočítaný sloupec deterministický na serveru SQL Server

  2. Jak mohu načíst seznam parametrů z uložené procedury na serveru SQL Server

  3. FNDCPASS &AFPASSWD

  4. Jak nahrát obrázky do databáze MySQL pomocí kódu PHP