sql >> Databasteknik >  >> RDS >> Mysql

JSON_LENGTH() – Returnera längden på ett JSON-dokument i MySQL

I MySQL, JSON_LENGTH() funktion returnerar längden på ett JSON-dokument.

När du anropar den här funktionen tillhandahåller du JSON-dokumentet som ett argument. Du kan också ange ett sökvägsargument för att returnera längden på ett värde i dokumentet.

Syntax

Syntaxen ser ut så här:

JSON_LENGTH(json_doc[, path])

Där json_doc är JSON-dokumentet för vilket djupet och path ska returneras är ett valfritt argument som kan användas för att returnera längden på ett värde i dokumentet.

Exempel 1 – Tomt objekt

Här är ett JSON-dokument som inte innehåller något annat än ett tomt objekt.

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

Resultat:

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

Exempel 2 – Objekt med data

Och här är vad som händer om vi lägger till data.

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

Resultat:

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

Detta returnerar 1 eftersom objektet innehåller en medlem. Om vi ​​lägger till en andra medlem händer det här:

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

Resultat:

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

Exempel 3 – Arrayer

Längden på en array är antalet element som den innehåller.

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

Resultat:

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

Detta är sant, även om ett av elementen innehåller sin egen array (eller objekt).

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

Resultat:

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

Exempel 4 – Sökvägsargumentet

Vi kan tillhandahålla en valfri path argument för att returnera längden på en given sökväg i dokumentet.

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

Resultat:

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

I det här fallet returnerar vi längden på Person objekt, som innehåller tre medlemmar.

Om vi ​​begränsar det till bara en av dessa medlemmar (säg Name). medlem), får vi detta:

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

Resultat:

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

Men om vi begränsar det till Hobbies array får vi detta:

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

Resultat:

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

  1. Oracle Fast Recovery Area

  2. viloläge orakelsekvens producerar stort gap

  3. Hur man får kumulativt totalt antal användare per dag i MySQL

  4. Sök i Microsoft SQL Server Database efter lagrad data