sql >> Database teknologi >  >> RDS >> Mysql

JSON_LENGTH() – Returner længden af ​​et JSON-dokument i MySQL

I MySQL er JSON_LENGTH() funktion returnerer længden af ​​et JSON-dokument.

Når du kalder denne funktion, angiver du JSON-dokumentet som et argument. Du kan også angive et sti-argument for at returnere længden af ​​en værdi i dokumentet.

Syntaks

Syntaksen ser sådan ud:

JSON_LENGTH(json_doc[, path])

Hvor json_doc er det JSON-dokument, som dybden og path skal returneres for er et valgfrit argument, der kan bruges til at returnere længden af ​​en værdi i dokumentet.

Eksempel 1 – Tomt objekt

Her er et JSON-dokument, der ikke indeholder andet end et tomt objekt.

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

Resultat:

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

Eksempel 2 – Objekt med data

Og her er, hvad der sker, hvis vi tilføjer data.

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

Resultat:

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

Dette returnerer 1 fordi objektet indeholder et medlem. Hvis vi tilføjer et andet medlem, sker der her:

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

Resultat:

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

Eksempel 3 – Arrays

Længden af ​​en matrix er antallet af elementer, den indeholder.

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

Resultat:

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

Dette er sandt, selvom et af elementerne indeholder sit eget array (eller objekt).

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

Resultat:

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

Eksempel 4 – Stiargumentet

Vi kan tilbyde en valgfri path argument for at returnere længden af ​​en given sti i dokumentet.

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

Resultat:

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

I dette tilfælde returnerer vi længden af Person objekt, som indeholder tre medlemmer.

Hvis vi begrænser det til kun et af disse medlemmer (f.eks. Name). medlem), får vi dette:

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

Resultat:

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

Men hvis vi begrænser det til Hobbies array, får vi dette:

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

Resultat:

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

  1. RowGen v3 automatiserer generering af databasetestdata

  2. Dynamisk pivotering af et bord Oracle

  3. Hvordan får jeg asynkron/hændelsesdrevet LISTEN/NOTIFY-understøttelse i Java ved hjælp af en Postgres-database?

  4. Opret en databasemailkonto i SQL Server (T-SQL)