Abrufen der Länge und Größe von JSON-Arrays
Um die Länge und Größe von JSON-Arrays zu ermitteln, können Sie die json_array_length- und json_size-Funktionen verwenden.
Beispiel: json_array_length
Um die Länge eines JSON-kodierten Arrays abzurufen, verwenden Sie die Funktion json_array_length.
WITH dataset AS ( SELECT * FROM (VALUES (JSON '{"name": "Bob Smith", "org": "legal", "projects": [{"name":"project1", "completed":false}]}'), (JSON '{"name": "Susan Smith", "org": "engineering", "projects": [{"name":"project2", "completed":true}, {"name":"project3", "completed":true}]}'), (JSON '{"name": "Jane Smith", "org": "finance", "projects": [{"name":"project2", "completed":true}]}') ) AS t (users) ) SELECT json_extract_scalar(users, '$.name') as name, json_array_length(json_extract(users, '$.projects')) as count FROM dataset ORDER BY count DESC
Diese Abfrage gibt das folgende Ergebnis zurück:
+---------------------+
| name | count |
+---------------------+
| Susan Smith | 2 |
+---------------------+
| Bob Smith | 1 |
+---------------------+
| Jane Smith | 1 |
+---------------------+
Beispiel: json_size
Um die Größe eines JSON-kodierten Arrays oder Objekts abzurufen, verwenden Sie die Funktion json_size und geben die Spalte an, die die JSON-Zeichenfolge und den JSONPath-Ausdruck zu dem Array oder Objekt enthält.
WITH dataset AS ( SELECT * FROM (VALUES (JSON '{"name": "Bob Smith", "org": "legal", "projects": [{"name":"project1", "completed":false}]}'), (JSON '{"name": "Susan Smith", "org": "engineering", "projects": [{"name":"project2", "completed":true},{"name":"project3", "completed":true}]}'), (JSON '{"name": "Jane Smith", "org": "finance", "projects": [{"name":"project2", "completed":true}]}') ) AS t (users) ) SELECT json_extract_scalar(users, '$.name') as name, json_size(users, '$.projects') as count FROM dataset ORDER BY count DESC
Diese Abfrage gibt das folgende Ergebnis zurück:
+---------------------+
| name | count |
+---------------------+
| Susan Smith | 2 |
+---------------------+
| Bob Smith | 1 |
+---------------------+
| Jane Smith | 1 |
+---------------------+