Di MySQL, JSON_LENGTH()
fungsi 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.
Sintaks
Sintaksnya seperti ini:
JSON_LENGTH(json_doc[, path])
Dimana json_doc
adalah dokumen JSON untuk mengembalikan kedalaman, dan path
adalah argumen opsional yang dapat digunakan untuk mengembalikan panjang nilai dalam dokumen.
Contoh 1 – Objek Kosong
Ini adalah dokumen JSON yang hanya berisi objek kosong.
SELECT JSON_LENGTH('{}') 'Result';
Hasil:
+--------+ | Result | +--------+ | 0 | +--------+
Contoh 2 – Objek dengan Data
Dan inilah yang terjadi jika kita menambahkan data.
SELECT JSON_LENGTH('{"Name": "Homer"}') 'Result';
Hasil:
+--------+ | Result | +--------+ | 1 | +--------+
Ini mengembalikan 1
karena objek berisi satu anggota. Jika kita menambahkan anggota kedua, inilah yang terjadi:
SELECT JSON_LENGTH('{"Name": "Homer", "Stupid": true}') 'Result';
Hasil:
+--------+ | Result | +--------+ | 2 | +--------+
Contoh 3 – Array
Panjang array adalah jumlah elemen yang dikandungnya.
SELECT JSON_LENGTH('[1, 2, 3]') 'Result';
Hasil:
+--------+ | Result | +--------+ | 3 | +--------+
Ini benar, bahkan jika salah satu elemen berisi larik (atau objeknya) sendiri.
SELECT JSON_LENGTH('[1, 2, [3, 4]]') 'Result';
Hasil:
+--------+ | Result | +--------+ | 3 | +--------+
Contoh 4 – Argumen jalur
Kami dapat menyediakan path
opsional argumen untuk mengembalikan panjang jalur yang diberikan dalam dokumen.
SET @data = '{ "Person": { "Name": "Homer", "Age": 39, "Hobbies": ["Eating", "Sleeping"] } }'; SELECT JSON_LENGTH(@data, '$.Person') 'Result';
Hasil:
+--------+ | Result | +--------+ | 3 | +--------+
Dalam hal ini kami mengembalikan panjang Person
objek, yang berisi tiga anggota.
Jika kita mempersempitnya menjadi hanya salah satu dari anggota tersebut (misalnya, Name
anggota), kami mendapatkan ini:
SET @data = '{ "Person": { "Name": "Homer", "Age": 39, "Hobbies": ["Eating", "Sleeping"] } }'; SELECT JSON_LENGTH(@data, '$.Person.Name') 'Result';
Hasil:
+--------+ | Result | +--------+ | 1 | +--------+
Tetapi jika kita mempersempitnya menjadi Hobbies
array, kita mendapatkan ini:
SET @data = '{ "Person": { "Name": "Homer", "Age": 39, "Hobbies": ["Eating", "Sleeping"] } }'; SELECT JSON_LENGTH(@data, '$.Person.Hobbies') 'Result';
Hasil:
+--------+ | Result | +--------+ | 2 | +--------+