Di MariaDB, JSON_LENGTH()
adalah fungsi bawaan yang mengembalikan panjang dokumen JSON.
Saat Anda memanggil fungsi ini, Anda memberikan dokumen JSON sebagai argumen. Anda juga dapat memberikan argumen jalur untuk mengembalikan panjang nilai dalam dokumen.
Panjangnya ditentukan sebagai berikut:
- Panjang skalar selalu 1.
- Jika array, jumlah elemen dalam array.
- Jika sebuah objek, jumlah anggota dalam objek tersebut.
Panjang array atau objek bersarang tidak dihitung.
Sintaks
Sintaksnya seperti ini:
JSON_LENGTH(json_doc[, path])
Dimana json_doc
adalah dokumen JSON, dan path
adalah argumen opsional yang menentukan jalur dalam dokumen.
Contoh
Berikut ini contoh untuk didemonstrasikan.
SET @json_document = '
{
"name": "Wag",
"type": "Dog",
"weight": 20
}
';
SELECT JSON_LENGTH(@json_document);
Hasil:
+-----------------------------+ | JSON_LENGTH(@json_document) | +-----------------------------+ | 3 | +-----------------------------+
Menentukan Jalur
Berikut ini contoh menentukan jalur dalam dokumen:
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');
Hasil:
+------------------------------------------+ | JSON_LENGTH(@json_document, '$.details') | +------------------------------------------+ | 2 | +------------------------------------------+
Seperti yang disebutkan, itu tidak menghitung panjang objek bersarang, jadi kami mendapatkan hasil 2
.
Contoh berikutnya turun satu tingkat dan menghitung panjang awards
objek:
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');
Hasil:
+-------------------------------------------------+ | JSON_LENGTH(@json_document, '$.details.awards') | +-------------------------------------------------+ | 3 | +-------------------------------------------------+
Skalar
Panjang skalar selalu 1
:
SELECT JSON_LENGTH(
'{ "a" : 378, "b" : 45 }',
'$.a'
) AS Result;
Hasil:
+--------+ | Result | +--------+ | 1 | +--------+
Array
Jika dokumen berupa larik, JSON_LENGTH()
menghitung jumlah elemen dalam larik:
SET @json_document = '
{
"name": "Wag",
"type": "Dog",
"scores": [9, 7, 8, 10, 3]
}
';
SELECT JSON_LENGTH(@json_document, '$.scores');
Hasil:
+-----------------------------------------+ | JSON_LENGTH(@json_document, '$.scores') | +-----------------------------------------+ | 5 | +-----------------------------------------+
Jalur yang Tidak Ada
Melewati jalur yang tidak ada di dokumen JSON menghasilkan NULL
.
Contoh:
SET @json_document = '
{
"name": "Wag",
"type": "Dog"
}
';
SELECT JSON_LENGTH(@json_document, '$.oops');
Hasil:
+---------------------------------------+ | JSON_LENGTH(@json_document, '$.oops') | +---------------------------------------+ | NULL | +---------------------------------------+
Objek Kosong
Jika objek yang dipilih kosong, hasilnya adalah 0
:
SELECT JSON_LENGTH('{}');
Hasil:
+-------------------+ | JSON_LENGTH('{}') | +-------------------+ | 0 | +-------------------+
Argumen Null
Jika ada argumen NULL
, hasilnya adalah NULL
:
SELECT
JSON_LENGTH(null) AS a,
JSON_LENGTH(null, '$.type') AS b,
JSON_LENGTH('{"a":1}', null) AS c;
Hasil:
+------+------+------+ | a | b | c | +------+------+------+ | NULL | NULL | NULL | +------+------+------+
Jumlah Parameter Salah
Tidak memberikan argumen akan menyebabkan kesalahan:
SELECT JSON_LENGTH();
Hasil:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_LENGTH'