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

MariaDB JSON_EXISTS() Vysvětleno

V MariaDB, JSON_EXISTS() je vestavěná funkce, která vám umožňuje zkontrolovat, zda na zadané cestě v dokumentu JSON existuje hodnota.

Přijme dokument JSON jako argument a vrátí 1 pokud je cesta nalezena, a 0 pokud není.

Dokumentace MariaDB uvádí, že funkce „určuje, zda v daných datech existuje zadaná hodnota JSON“. Zdá se však, že funkce ve skutečnosti nekontroluje danou hodnotu. Pravděpodobně je přesnější říci, že určuje, zda je zadaná cesta existuje nebo že na zadané cestě existuje hodnota.

Pro kontrolu, zda je skutečná hodnota existuje, můžete použít JSON_CONTAINS() funkce.

Syntaxe

Syntaxe vypadá takto:

JSON_EXISTS(json_doc, path) 

Kde json_doc je dokument JSON a path je cesta k nalezení.

Příklad

Zde je příklad k demonstraci.

SELECT JSON_EXISTS('{ "name": "Wag" }', '$.name'); 

Výsledek:

+--------------------------------------------+| JSON_EXISTS('{ "name":"Wag" }', '$.name') |+---------------------------- -----------------+| 1 |+--------------------------------------------+ 

V tomto případě je cesta nalezena a výsledek je 1 .

Pokud cesta není nalezena, výsledek je 0 , takto:

SELECT JSON_EXISTS('{ "name": "Wag" }', '$.type'); 

Výsledek:

+--------------------------------------------+| JSON_EXISTS('{ "name":"Wag" }', '$.type') |+---------------------------- -----------------+| 0 |+--------------------------------------------+ 

Pole

V tomto příkladu zkontroluji existenci prvku na daném indexu pole:

SELECT JSON_EXISTS(
    '{ 
        "name": "Wag", 
        "scores": [ 10, 8, 7 ] 
    }', 
    "$.scores[2]"
    ) AS Result; 

Výsledek:

+---------+| Výsledek |+--------+| 1 |+--------+

Co se stane, pokud index v poli neexistuje:

SELECT JSON_EXISTS(
    '{ 
        "name": "Wag", 
        "scores": [ 10, 8, 7 ] 
    }', 
    '$.scores[3]'
    ) AS Result; 

Výsledek:

+---------+| Výsledek |+--------+| 0 |+--------+

Větší dokument JSON

Zde je příklad, který používá o něco větší dokument JSON. Zde zkontroluji klíč, který existuje v několika úrovních vnoření:

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_EXISTS(
    @json_document, 
    '$.details.awards.Sumo 2020'
    ) AS Result; 

Výsledek:

+---------+| Výsledek |+--------+| 1 |+--------+

Nulové argumenty

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

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

Výsledek:

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

Neplatný JSON

Předání neplatného JSON má za následek NULL :

SELECT JSON_EXISTS('{1}', '$.a'); 

Výsledek:

+---------------------------+| JSON_EXISTS('{1}', '$.a') |+---------------------------+| NULL |+---------------------------+

Nesprávný počet parametrů

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

SELECT JSON_EXISTS(); 

Výsledek:

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

Je to stejné, když uvedete příliš mnoho argumentů:

SELECT JSON_EXISTS('{"a": 1}', '$.a', 3); 

Výsledek:

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

  1. Getting Error – ORA-01858:Na místě, kde se očekávala číslice, byl nalezen nečíselný znak

  2. Jak mohu exportovat obsah tabulky oracle do souboru?

  3. Jak migrovat databáze na váš Reseller Server

  4. Vyberte velikost databáze SQL Server