SQLite
 sql >> Teknologi Basis Data >  >> RDS >> SQLite

SQLite JSON_ARRAY_LENGTH()

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sinkronisasi database SQLite offline dengan database MySQL online

  2. Cara Melewati Baris yang Melanggar Batasan Saat Memasukkan Data di SQLite

  3. Aplikasi berhenti bekerja karena database

  4. Tabel Perubahan Migrasi Kamar tidak menambahkan kolom baru &bermigrasi dipanggil lagi dan lagi

  5. Netralisasi yang Tidak Tepat dari Elemen Khusus yang digunakan dalam Perintah SQL