sql >> Databáze >  >> RDS >> Mysql

JSON_LENGTH() – Vrátí délku dokumentu JSON v MySQL

V MySQL je to JSON_LENGTH() funkce 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.

Syntaxe

Syntaxe vypadá takto:

JSON_LENGTH(json_doc[, path])

Kde json_doc je dokument JSON, pro který se má vrátit hloubka a path je volitelný argument, který lze použít k vrácení délky hodnoty v dokumentu.

Příklad 1 – Prázdný objekt

Zde je dokument JSON, který neobsahuje nic jiného než prázdný objekt.

SELECT JSON_LENGTH('{}') 'Result';

Výsledek:

+--------+
| Result |
+--------+
|      0 |
+--------+

Příklad 2 – Objekt s daty

A co se stane, když přidáme data.

SELECT JSON_LENGTH('{"Name": "Homer"}') 'Result';

Výsledek:

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

To vrátí 1 protože objekt obsahuje jeden člen. Pokud přidáme druhého člena, stane se toto:

SELECT JSON_LENGTH('{"Name": "Homer", "Stupid": true}') 'Result';

Výsledek:

+--------+
| Result |
+--------+
|      2 |
+--------+

Příklad 3 – Pole

Délka pole je počet prvků, které obsahuje.

SELECT JSON_LENGTH('[1, 2, 3]') 'Result';

Výsledek:

+--------+
| Result |
+--------+
|      3 |
+--------+

To platí, i když jeden z prvků obsahuje vlastní pole (nebo objekt).

SELECT JSON_LENGTH('[1, 2, [3, 4]]') 'Result';

Výsledek:

+--------+
| Result |
+--------+
|      3 |
+--------+

Příklad 4 – Argument cesty

Můžeme poskytnout volitelnou path argument, který vrátí délku dané cesty v dokumentu.

SET @data = '{  
    "Person": {    
       "Name": "Homer", 
       "Age": 39,
       "Hobbies": ["Eating", "Sleeping"]  
    }
 }';
SELECT JSON_LENGTH(@data, '$.Person') 'Result';

Výsledek:

+--------+
| Result |
+--------+
|      3 |
+--------+

V tomto případě vrátíme délku Person objekt, který obsahuje tři členy.

Pokud to zúžíme pouze na jeden z těchto členů (řekněme Name člen), dostaneme toto:

SET @data = '{  
    "Person": {    
       "Name": "Homer", 
       "Age": 39,
       "Hobbies": ["Eating", "Sleeping"]  
    }
 }';
SELECT JSON_LENGTH(@data, '$.Person.Name') 'Result';

Výsledek:

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

Ale když to zúžíme na Hobbies pole, dostaneme toto:

SET @data = '{  
    "Person": {    
       "Name": "Homer", 
       "Age": 39,
       "Hobbies": ["Eating", "Sleeping"]  
    }
 }';
SELECT JSON_LENGTH(@data, '$.Person.Hobbies') 'Result';

Výsledek:

+--------+
| Result |
+--------+
|      2 |
+--------+

  1. Typy textových, ntextových a obrazových dat> nelze porovnávat ani třídit, s výjimkou použití operátoru IS NULL nebo LIKE>

  2. Jak získat velikost databáze MySQL?

  3. Mám použít NOT IN, OUTER APPLY, LEFT OUTER JOIN, EXCEPT nebo NOT EXISTS?

  4. Jak naformátuji číslo s čárkami v T-SQL?