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

MariaDB JSON_LENGTH() Vysvětleno

V MariaDB, JSON_LENGTH() je vestavěná funkce, která vrací délku dokumentu JSON.

Když zavoláte tuto funkci, poskytnete jako argument dokument JSON. Můžete také zadat argument cesty, který vrátí délku hodnoty v dokumentu.

Délka je určena následovně:

  • Délka skaláru je vždy 1.
  • Pokud jde o pole, počet prvků v poli.
  • Pokud jde o objekt, počet členů v objektu.

Délka vnořených polí nebo objektů se nepočítá.

Syntaxe

Syntaxe vypadá takto:

JSON_LENGTH(json_doc[, path])

Kde json_doc je dokument JSON a path je volitelný argument, který určuje cestu v dokumentu.

Příklad

Zde je příklad k demonstraci.

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

Výsledek:

+-----------------------------+
| JSON_LENGTH(@json_document) |
+-----------------------------+
|                           3 |
+-----------------------------+

Určení cesty

Zde je příklad zadání cesty v dokumentu:

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

Výsledek:

+------------------------------------------+
| JSON_LENGTH(@json_document, '$.details') |
+------------------------------------------+
|                                        2 |
+------------------------------------------+

Jak již bylo zmíněno, nepočítá délku vnořených objektů, takže dostaneme výsledek 2 .

Další příklad jde o úroveň níže a počítá délku awards objekt:

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

Výsledek:

+-------------------------------------------------+
| JSON_LENGTH(@json_document, '$.details.awards') |
+-------------------------------------------------+
|                                               3 |
+-------------------------------------------------+

Skaláry

Délka skaláru je vždy 1 :

SELECT JSON_LENGTH( 
    '{ "a" : 378, "b" : 45 }', 
    '$.a' 
    ) AS Result;

Výsledek:

+--------+
| Result |
+--------+
|      1 |
+--------+

Pole

Pokud je dokument pole, JSON_LENGTH() počítá počet prvků v poli:

SET @json_document = '
    { 
        "name": "Wag", 
        "type": "Dog", 
        "scores": [9, 7, 8, 10, 3] 
    }
';
SELECT JSON_LENGTH(@json_document, '$.scores');

Výsledek:

+-----------------------------------------+
| JSON_LENGTH(@json_document, '$.scores') |
+-----------------------------------------+
|                                       5 |
+-----------------------------------------+

Neexistující cesty

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

Příklad:

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

Výsledek:

+---------------------------------------+
| JSON_LENGTH(@json_document, '$.oops') |
+---------------------------------------+
|                                  NULL |
+---------------------------------------+

Prázdné objekty

Pokud je vybraný objekt prázdný, výsledek je 0 :

SELECT JSON_LENGTH('{}');

Výsledek:

+-------------------+
| JSON_LENGTH('{}') |
+-------------------+
|                 0 |
+-------------------+

Nulové argumenty

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

SELECT 
    JSON_LENGTH(null) AS a,
    JSON_LENGTH(null, '$.type') AS b,
    JSON_LENGTH('{"a":1}', null) AS c;

Výsledek:

+------+------+------+
| a    | b    | c    |
+------+------+------+
| NULL | NULL | NULL |
+------+------+------+

Nesprávný počet parametrů

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

SELECT JSON_LENGTH();

Výsledek:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_LENGTH'

  1. Hostitel 'xxx.xx.xxx.xxx' se nemůže připojit k tomuto serveru MySQL

  2. Přidejte sloupec, který představuje zřetězení dvou dalších sloupců Varchar

  3. Jak získat aktuální čas v SQLite

  4. Jak naplnit druhý rozevírací seznam na základě výběru prvního rozevíracího seznamu pomocí jQuery/AJAX a PHP/MySQL?