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

SQLite JSON_REMOVE()

Kita dapat menggunakan SQLite json_remove() berfungsi untuk menghapus satu atau lebih elemen dari objek atau larik JSON.

Kami meneruskan JSON asli sebagai argumen pertama saat kami memanggil fungsi, diikuti oleh satu atau beberapa jalur yang menentukan elemen mana yang akan dihapus. Yang saya maksud dengan “elemen” adalah elemen array atau anggota objek (pasangan kunci/nilai).

Sintaks

Sintaksnya seperti ini:

json_remove(X,P,...)

Dimana X mewakili JSON asli, dan P,... mewakili jalur yang akan dihapus.

Contoh

Berikut ini contoh untuk didemonstrasikan:

SELECT json_remove('{ "name" : "Fluffy", "age" : 10 }', '$.age');

Hasil:

{"name":"Fluffy"}

Di sini, kami menentukan $.age path, dan itulah yang dihapus dari dokumen JSON.

Hapus Banyak Anggota

Kami dapat menghapus beberapa anggota dari objek JSON dengan menentukan beberapa jalur, dipisahkan dengan koma:

SELECT json_remove('{ 
        "name" : "Fluffy",
        "type" : "Cat",
        "age" : 10 
    }', 
    '$.type',
    '$.age'
);

Hasil:

{"name":"Fluffy"}

Array

Kita dapat menghapus elemen array dengan menentukan indeks elemen:

SELECT json_remove('[ 0, 1, 2, 3 ]', '$[2]');

Hasil:

[0,1,3]

Array berbasis nol, jadi penghitungan dimulai dari 0 .

Namun, penting untuk memperhatikan urutan penghapusan dilakukan. Penghapusan terjadi secara berurutan dari kiri ke kanan. Perubahan yang disebabkan oleh penghapusan sebelumnya dapat memengaruhi pencarian jalur untuk argumen berikutnya.

Berikut ini contoh bagaimana hal itu dapat memengaruhi hasil kami:

SELECT json_remove('[ 0, 1, 2, 3 ]', 
    '$[0]',
    '$[2]'
);

Hasil:

[1,2]

Dalam hal ini, elemen larik 0 dihapus terlebih dahulu, lalu elemen larik 2 telah dihapus dari array yang tersisa. Dengan kata lain, jalur kedua menghapus elemen dari larik setelah jalur pertama telah dihapus.

Array yang dihasilkan adalah salah satu yang mungkin tidak kita antisipasi. Alih-alih menghapus elemen 0 dan 2 dari larik asli, kami telah menghapus elemen 0 dan 3 dari larik asli.

Kami dapat mengatasi masalah ini dengan menyusun ulang jalur:

SELECT json_remove('[ 0, 1, 2, 3 ]', 
    '$[2]',
    '$[0]'
);

Hasil:

[1,3]

Tidak Ada Jalur

Argumen jalur sebenarnya opsional. Jika kita memanggil json_remove() tanpa argumen jalur, ini mengembalikan versi input JSON yang diperkecil (yaitu dengan spasi berlebih yang dihapus):

SELECT json_remove('{ 
        "name" : "Fluffy",
        "type" : "Cat",
        "age" : 10 
    }'
);

Hasil:

{"name":"Fluffy","type":"Cat","age":10}

Ini adalah hasil yang sama yang kita dapatkan jika kita menggunakan json() fungsi alih-alih json_remove() .

Jalur Tidak Ada

Menentukan jalur yang tidak ada di JSON input menghasilkan JSON asli yang dikembalikan, tidak berubah:

SELECT json_remove('{ "name" : "Fluffy", "age" : 10 }', '$.type');

Hasil:

{"name":"Fluffy","age":10}

Jalur Tidak Valid

Kami akan mendapatkan kesalahan jika jalur kami tidak terbentuk dengan baik:

SELECT json_remove('{ "name" : "Fluffy", "age" : 10 }', 'age');

Hasil:

Runtime error: JSON path error near 'age'

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_remove('{ "name" : "Fluffy", "age" }', '$.age');

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. SQLite JSON_REMOVE()

  2. saya punya aplikasi android yang mengambil data dari sqlite dan menampilkan data di BaseAdapter .. apa cara terbaik ??

  3. Cara Memperbarui/Menghapus dengan elemen dari dua tabel berbeda SQLite

  4. Buat Batasan CHECK di SQLite

  5. Kembalikan Baris yang Hanya Mengandung Karakter Non-Alfanumerik di SQLite