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

3 Cara Mengekstrak Nilai dari Dokumen JSON di SQLite

Saat menggunakan SQLite, kita dapat menggunakan metode berikut untuk mengekstrak data dari dokumen JSON.

json_extract() Fungsi

Seperti namanya, json_extract() fungsi mengekstrak dan mengembalikan satu atau beberapa nilai dari JSON yang terbentuk dengan baik.

Contoh:

SELECT json_extract('{
    "dogs" : [
            { "name" : "Wag", "scores" : [ 7, 9 ] },
            { "name" : "Bark", "scores" : [ 3, 4, 8, 7 ] },
            { "name" : "Woof", "scores" : [ 3, 2, 1 ] }
    ]
}', 
'$.dogs[1]'
);

Hasil:

{"name":"Bark","scores":[3,4,8,7]}

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.

Kita dapat mengembalikan nama anjing saja pada posisi itu dalam larik dengan menambahkan ke jalur kita:

SELECT json_extract('{
    "dogs" : [
            { "name" : "Wag", "scores" : [ 7, 9 ] },
            { "name" : "Bark", "scores" : [ 3, 4, 8, 7 ] },
            { "name" : "Woof", "scores" : [ 3, 2, 1 ] }
    ]
}', 
'$.dogs[1].name'
);

Hasil:

Bark

Kita dapat menggunakan json_extract() untuk mengembalikan beberapa jalur:

SELECT json_extract('{
    "dogs" : [
            { "name" : "Wag", "scores" : [ 7, 9 ] },
            { "name" : "Bark", "scores" : [ 3, 4, 8, 7 ] },
            { "name" : "Woof", "scores" : [ 3, 2, 1 ] }
    ]
}', 
'$.dogs[0].name',
'$.dogs[1].name',
'$.dogs[2].name'
);

Hasil:

["Wag","Bark","Woof"]

Saat kami mengekstrak nilai dari beberapa jalur, nilai dikembalikan dalam array.

-> Operator

-> operator mengekstrak subkomponen dari dokumen JSON dan mengembalikan representasi JSON dari subkomponen tersebut.

Oleh karena itu, kita dapat mengubah contoh pertama menjadi ini:

SELECT '{
    "dogs" : [
            { "name" : "Wag", "scores" : [ 7, 9 ] },
            { "name" : "Bark", "scores" : [ 3, 4, 8, 7 ] },
            { "name" : "Woof", "scores" : [ 3, 2, 1 ] }
    ]
}' -> '$.dogs[1]';

Hasil:

{"name":"Bark","scores":[3,4,8,7]}

-> operator agak berbeda dengan json_extract() fungsi:

  • -> operator selalu mengembalikan representasi JSON dari subkomponen.
  • json_extract() fungsi hanya mengembalikan JSON jika ada dua atau lebih argumen jalur (karena hasilnya adalah larik JSON) atau jika argumen jalur tunggal mereferensikan larik atau objek.
  • Jika hanya ada satu argumen jalur dan jalur tersebut mereferensikan null JSON atau string atau nilai numerik, maka json_extract() mengembalikan nilai SQL NULL, TEXT, INTEGER, atau REAL yang sesuai.

Oleh karena itu, inilah yang terjadi ketika kami mengekstrak nama anjing dari JSON kami:

SELECT '{
    "dogs" : [
            { "name" : "Wag", "scores" : [ 7, 9 ] },
            { "name" : "Bark", "scores" : [ 3, 4, 8, 7 ] },
            { "name" : "Woof", "scores" : [ 3, 2, 1 ] }
    ]
}' -> '$.dogs[1].name';

Hasil:

"Bark"

Kali ini dikelilingi oleh kutipan. Itu karena ia mengembalikan representasi nilai JSON. Ketika kami mengekstrak nilai yang sama dengan json_extract() sebelumnya, kami mendapatkan representasi SQL dari nilai tersebut.

Namun, kita juga dapat menggunakan ->> operator untuk mengembalikan representasi SQL.

->> Operator

->> operator bekerja dengan cara yang sama seperti -> operator, kecuali ->> mengembalikan representasi SQL dari subkomponen yang ditentukan. Secara khusus, ini mengembalikan SQL TEXT , INTEGER , REAL , atau NULL nilai yang mewakili subkomponen yang dipilih, atau NULL jika subkomponen tidak ada.

Oleh karena itu, inilah yang terjadi ketika kita menggunakan ->> operator untuk mengekstrak nama anjing:

SELECT '{
    "dogs" : [
            { "name" : "Wag", "scores" : [ 7, 9 ] },
            { "name" : "Bark", "scores" : [ 3, 4, 8, 7 ] },
            { "name" : "Woof", "scores" : [ 3, 2, 1 ] }
    ]
}' ->> '$.dogs[1].name';

Hasil:

Bark

Tidak lagi diapit tanda kutip.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara menambahkan jumlah baris kosong tertentu di sqlite?

  2. Lihat konten file database di Android Studio

  3. Pencarian Beraksen di sqlite (android)

  4. SQLite3.Exception:gambar disk database salah format

  5. Tambahkan Bulan ke Tanggal di SQLite