Dimulai dengan SQLite versi 3.38.0 (dirilis pada 22 Februari 2022), sekarang kita dapat menggunakan ->
dan ->>
operator untuk mengekstrak subkomponen dokumen JSON.
Tujuan dari operator ini adalah agar kompatibel dengan operator MySQL dan PostgreSQL yang setara.
Juga, dimulai dengan SQLite 3.38.0, fungsi JSON sekarang sudah terintegrasi. Oleh karena itu, tidak perlu lagi menggunakan -DSQLITE_ENABLE_JSON1
opsi waktu kompilasi untuk mengaktifkan dukungan JSON.
Sintaks
Cara kerja operator ini adalah seperti ini:
json -> path
json ->> path
Dimana json
adalah dokumen JSON dan path
adalah jalur yang ingin kita ekstrak darinya.
Jadi kami menyediakan dokumen JSON di sebelah kiri operator, dan kami menentukan jalur yang ingin kami ekstrak di sebelah kanannya.
Perbedaan antara operator ini seperti ini:
->
operator selalu mengembalikan representasi JSON dari subkomponen yang ditentukan->>
operator selalu mengembalikan representasi SQL dari subkomponen yang ditentukan
Contoh ->
Operator
Berikut adalah contoh sederhana untuk menunjukkan bagaimana ->
operator bekerja:
SELECT '{ "name" : "Wag", "type" : "Dog" }' -> '$';
Hasil:
{"name":"Wag","type":"Dog"}
Dalam hal ini, saya menentukan jalur '$'
yang mengembalikan seluruh dokumen.
Mari tentukan jalur lain:
SELECT '{ "name" : "Wag", "type" : "Dog" }' -> '$.type';
Hasil:
"Dog"
Kita juga bisa melakukannya seperti ini:
SELECT '{ "name" : "Wag", "type" : "Dog" }' -> 'type';
Hasil:
"Dog"
Contoh ->>
Operator
Inilah yang terjadi ketika kita menggunakan ->>
sebagai gantinya:
SELECT '{ "name" : "Wag", "type" : "Dog" }' ->> '$.type';
Hasil:
Dog
Nilainya tidak dikutip seperti sebelumnya. Itu karena ->
mengembalikan representasi JSON dari subkomponen dan ->>
mengembalikan representasi SQL.
->>
operator mengembalikan nilai SQL TEXT, INTEGER, REAL, atau NULL yang mewakili subkomponen yang dipilih, atau NULL jika subkomponen tidak ada.
Berikut ini contoh dengan array:
SELECT '{ "scores" : [ 9, 7, 5 ] }' ->> '$.scores[2]';
Hasil:
5
Jika nilainya hanya terdiri dari array, kita dapat melakukan ini:
SELECT '[ 9, 7, 5 ]' ->> '2';
Hasil:
5
Itu mengembalikan elemen array pada indeks yang ditentukan (dalam hal ini 2).
Array berbasis nol (penghitungan dimulai dari 0
), dan itulah sebabnya 2
mengembalikan item ketiga.