Dalam SQLite, json_array_length()
fungsi mengembalikan jumlah elemen dalam larik JSON yang diberikan.
Array disediakan sebagai argumen. Jika larik disematkan dalam dokumen JSON yang lebih besar, kita dapat menggunakan argumen kedua opsional untuk menentukan jalur ke larik.
Jika nilainya bukan array, fungsi mengembalikan 0
.
Sintaks
Fungsi tersebut dapat digunakan dengan dua cara berikut:
json_array_length(X)
json_array_length(X,P)
Dimana X
mewakili array dan P
adalah jalur opsional yang dapat digunakan untuk menentukan jalur ke larik dalam dokumen yang lebih besar.
Contoh
Berikut adalah contoh dasar untuk ditunjukkan:
SELECT json_array_length('[ 7, 12, 10 ]');
Hasil:
3
Array berisi tiga elemen sehingga 3
dikembalikan.
Tentukan Jalur
Kita juga dapat menggunakan argumen kedua untuk menentukan jalur ke array:
SELECT json_array_length('[ 7, 12, 10 ]', '$');
Hasil:
3
Dalam hal ini array berada di tingkat atas, jadi kami melewati $
sebagai jalan.
Contoh berikut menggunakan larik yang disematkan dalam dokumen yang lebih besar:
SELECT json_array_length('{
"dogs" : [
{ "name" : "Wag", "scores" : [ 7, 9 ] },
{ "name" : "Bark", "scores" : [ 3, 4, 8, 7 ] },
{ "name" : "Woof", "scores" : [ 3, 2, 1 ] }
]
}',
'$.dogs'
);
Hasil:
3
Dalam hal ini, larik di dogs
mengandung tiga elemen.
Kita dapat menavigasi ke tingkat berikutnya dan menemukan jumlah elemen di salah satu larik lainnya:
SELECT json_array_length('{
"dogs" : [
{ "name" : "Wag", "scores" : [ 7, 9 ] },
{ "name" : "Bark", "scores" : [ 3, 4, 8, 7 ] },
{ "name" : "Woof", "scores" : [ 3, 2, 1 ] }
]
}',
'$.dogs[1].scores'
);
Hasil:
4
Array berbasis nol, sehingga penghitungan dimulai dari 0
. Oleh karena itu, kami menetapkan [1]
untuk mendapatkan elemen kedua dalam dogs
array, yang kebetulan merupakan objek JSON. Kami kemudian menggunakan .scores
untuk memilih lariknya.
Memilih Non-Array
Jika jalur menunjuk ke nilai selain larik JSON, 0
dikembalikan:
SELECT json_array_length('{
"dogs" : [
{ "name" : "Wag", "scores" : [ 7, 9 ] },
{ "name" : "Bark", "scores" : [ 3, 4, 8, 7 ] },
{ "name" : "Woof", "scores" : [ 3, 2, 1 ] }
]
}',
'$.dogs[1].name'
);
Hasil:
0
Memilih Jalur yang Tidak Ada
Jika argumen kedua menunjuk ke jalur yang tidak ada, null
dikembalikan.
Pertama, mari kita atur .nullvalue
ke NULL
:
.nullvalue NULL
.nullvalue
perintah dot memungkinkan kita untuk memberikan string yang akan digunakan untuk menggantikan nilai null. Ini adalah salah satu dari beberapa cara Anda dapat mengganti nilai null dengan string di SQLite. Dalam hal ini, saya mengaturnya ke NULL
. Sekarang, nilai nol apa pun akan mengembalikan NULL
bukannya hasil kosong.
Sekarang mari kita panggil json_array_length()
, tetapi gunakan argumen kedua yang menunjuk ke jalur yang tidak ada:
SELECT json_array_length('{
"dogs" : [
{ "name" : "Wag", "scores" : [ 7, 9 ] },
{ "name" : "Bark", "scores" : [ 3, 4, 8, 7 ] },
{ "name" : "Woof", "scores" : [ 3, 2, 1 ] }
]
}',
'$.cats'
);
Hasil:
NULL
Jalur Tidak Valid
Kami akan mendapatkan kesalahan jika jalur kami tidak terbentuk dengan baik:
SELECT json_array_length('{
"dogs" : [
{ "name" : "Wag", "scores" : [ 7, 9 ] },
{ "name" : "Bark", "scores" : [ 3, 4, 8, 7 ] },
{ "name" : "Woof", "scores" : [ 3, 2, 1 ] }
]
}',
'dogs'
);
Hasil:
Runtime error: JSON path error near 'dogs'
Dalam hal ini, saya lupa memasukkan $.
di depan jalan.
Dokumen JSON Tidak Valid
Kami juga akan mendapatkan kesalahan JSON tidak terbentuk dengan baik:
SELECT json_array_length('{ "Dogs" : }',
'$'
);
Hasil:
Runtime error: malformed JSON
Kali ini kesalahan memberi tahu kami bahwa JSON kami salah format.