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

Operator

Dalam SQLite, ->> operator mengekstrak subkomponen dari dokumen JSON dan mengembalikan representasi SQL dari subkomponen tersebut.

->> operator pertama kali diperkenalkan di SQLite versi 3.38.0 (dirilis pada 22 Februari 2022).

Sintaks

Sintaksnya seperti ini:

json ->> path

Dimana json adalah dokumen JSON dan path adalah jalur ke subkomponen 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.

->> operator selalu mengembalikan representasi SQL dari subkomponen yang ditentukan. Untuk mengembalikan representasi JSON, gunakan -> sebagai gantinya.

Contoh

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 menghilangkan tanda dolar dan titik sama sekali, seperti ini:

SELECT '{ "name" : "Wag", "type" : "Dog" }' ->> 'type';

Hasil:

Dog

Ini dia dengan dokumen JSON yang lebih besar:

SELECT '[
        { 
        "user" : "Spike",
        "age" : 30,
        "scores" : [ 9, 7, 3 ]
        },
        { 
        "user" : "Faye",
        "age" : 25,
        "scores" : [ 90, 87, 93 ]
        },
        { 
        "user" : "Jet",
        "age" : 40,
        "scores" : [ 50, 38, 67 ]
        }
        ]' ->> '$[0]';

Hasil:

{"user":"Spike","age":30,"scores":[9,7,3]}

Dalam SQLite, array berbasis nol, dan dengan demikian menentukan [0] mengembalikan elemen larik pertama.

Jika kami hanya ingin mendapatkan skor pengguna tersebut, kami dapat melakukan ini:

SELECT '[
        { 
        "user" : "Spike",
        "age" : 30,
        "scores" : [ 9, 7, 3 ]
        },
        { 
        "user" : "Faye",
        "age" : 25,
        "scores" : [ 90, 87, 93 ]
        },
        { 
        "user" : "Jet",
        "age" : 40,
        "scores" : [ 50, 38, 67 ]
        }
        ]' ->> '$[0].scores';

Hasil:

[9,7,3]

Kita bisa masuk lebih dalam dan mengekstrak skor tertentu:

SELECT '[
        { 
        "user" : "Spike",
        "age" : 30,
        "scores" : [ 9, 7, 3 ]
        },
        { 
        "user" : "Faye",
        "age" : 25,
        "scores" : [ 90, 87, 93 ]
        },
        { 
        "user" : "Jet",
        "age" : 40,
        "scores" : [ 50, 38, 67 ]
        }
        ]' ->> '$[0].scores[1]';

Hasil:

7

Jalur Tidak Ada

Jika jalur tidak ada di JSON, nilai null akan dikembalikan:

SELECT '{ "name" : "Wag", "type" : "Dog" }' ->> '$.age';

Hasil:

null

Perhatikan bahwa Dalam SQLite, Anda dapat menggunakan .nullvalue untuk menentukan string ke output setiap kali nilai null dikembalikan. Dalam kasus saya, saya sebelumnya menjalankan perintah berikut:

.nullvalue null

Itu menentukan bahwa teks null harus menjadi keluaran setiap kali nilai nol dikembalikan. Itulah mengapa contoh di atas menampilkan teks null . Jika saya tidak melakukan ini, hasilnya mungkin kosong.

JSON tidak valid

Jika argumen pertama bukan JSON yang valid, kesalahan akan muncul:

SELECT '{ "name" }' ->> '$';

Hasil:

Runtime error: malformed JSON

Jalur Tidak Valid

Dan jika argumen kedua bukan jalur yang valid, kesalahan akan muncul:

SELECT '{ "name" : "Wag", "type" : "Dog" }' ->> '$name';

Hasil:

Runtime error: JSON path error near 'name'

Dalam hal ini, saya lupa menyertakan titik (. ) di antara tanda dolar ($ ) dan name .

Namun seperti yang disebutkan, adalah mungkin untuk menghilangkan tanda dolar dan titik sama sekali:

SELECT '{ "name" : "Wag", "type" : "Dog" }' ->> 'name';

Hasil:

Wag

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tidak memiliki kunci basis data! di android

  2. Cara Menjatuhkan Kunci Asing di SQLite

  3. Format String Waktu yang Valid untuk Fungsi Tanggal/Waktu SQLite

  4. Cara Menginstal SQLite dan SQLite Browser di Ubuntu

  5. Tutup tidak pernah secara eksplisit dipanggil di Database