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

SQLite JSON_PATCH()

Dalam SQLite, json_patch() fungsi dapat digunakan untuk menambah, mengubah, atau menghapus elemen Objek JSON.

Untuk melakukannya, ini menjalankan algoritme RFC-7396 MergePatch untuk menerapkan patch tertentu terhadap input JSON yang diberikan.

Kami meneruskan JSON asli sebagai argumen pertama saat kami memanggil fungsi, diikuti oleh tambalan. Fungsi tersebut kemudian menerapkan tambalan itu terhadap JSON dalam argumen pertama.

Sintaks

Sintaksnya seperti ini:

json_patch(T,P)

Dimana T mewakili JSON asli, dan P adalah patchnya. Fungsi tersebut menerapkan patch P terhadap T .

Isi dari patch yang disediakan P dibandingkan dengan konten dokumen JSON target saat ini T . Jika P berisi anggota yang tidak muncul di T , anggota tersebut ditambahkan. Jika T tidak mengandung anggota, nilainya diganti.

Nilai nol di P diberi arti khusus untuk menunjukkan penghapusan nilai yang ada di T .

Contoh

Berikut adalah beberapa contoh untuk ditunjukkan.

Sisipkan

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

Hasil:

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

Mencoba memasukkan anggota baru dengan nilai nol tidak berhasil:

SELECT json_patch('{ "name" : "Fluffy" }', '{ "age" : null }');

Hasil:

{"name":"Fluffy"}

Nilai null sebenarnya digunakan untuk menghapus anggota dari JSON (seperti yang terlihat pada contoh selanjutnya).

Perbarui

SELECT json_patch('{ "name" : "Fluffy" }', '{ "name" : "Baldy" }');

Hasil:

{"name":"Baldy"}

Jika ada beberapa pasangan kunci/nilai, tetapi kita hanya ingin memperbarui satu, kita hanya perlu menentukan pasangan itu dalam argumen kedua:

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

Hasil:

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

Konsep yang sama berlaku saat memperbarui beberapa pasangan kunci/nilai – kita hanya perlu menentukan pasangan tersebut:

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

Hasil:

{"name":"Baldy","type":"Cat","age":11}

Perbarui &Sisipkan

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

Hasil:

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

Hapus/Hapus

Nilai null pada merge patch diberikan arti khusus untuk menunjukkan penghapusan nilai yang ada di target:

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

Hasil:

{"name":"Fluffy"}

Array

json_patch() fungsi tidak dapat menambahkan elemen ke array, atau memodifikasi elemen individual dari array. Itu hanya dapat menyisipkan, mengganti, atau menghapus seluruh larik sebagai satu unit.

Jadi, inilah contoh menambahkan elemen ke array:

SELECT json_patch('[ 1, 2, 3 ]', '[ 1, 2, 3, 4 ]');

Hasil:

[1,2,3,4]

Saya harus mengganti array asli dengan yang baru. Jadi secara teknis, saya tidak benar-benar menambahkan apa pun – saya hanya mengganti seluruh array dengan yang lain.

Konsep yang sama berlaku jika array berada di dalam objek:

SELECT json_patch('{ "scores" : [ 1, 2, 3 ] }', '{ "scores" : [ 1, 2, 3, 4 ] }');

Hasil:

{"scores":[1,2,3,4]}

Jika Anda perlu bekerja dengan array, coba fungsi seperti json_set() , json_insert() , json_remove() dan json_replace() sebagai gantinya.

Mengganti Objek dengan Array

Kita dapat mengganti objek dengan array hanya dengan menyediakan array sebagai patch:

SELECT json_patch('{ "name" : "Fluffy", "age" : 10 }', '[ "Fluffy", 10 ]');

Hasil:

["Fluffy",10]

Ganti Array dengan Objek

Dan itu bekerja sebaliknya juga:

SELECT json_patch('[ "Fluffy", 10 ]', '{ "name" : "Fluffy", "age" : 10 }');

Hasil:

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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Masalah dengan SQLiteOpenHelper di android 2.X dan 3.X

  2. 4 Mode Output Tabular di SQLite

  3. Kebocoran database SQLite ditemukan

  4. Kapan saya harus menutup kursor dan db?

  5. Bagaimana SQLite Quote() Bekerja