Di MariaDB, JSON_QUERY()
adalah fungsi bawaan yang mengembalikan objek atau larik dari dokumen JSON, berdasarkan jalur yang disediakan.
Ini mirip dengan JSON_VALUE()
fungsi, kecuali mengembalikan objek atau larik alih-alih skalar (JSON_VALUE()
mengembalikan skalar).
Sintaks
Sintaksnya seperti ini:
JSON_QUERY(json_doc, path)
Dimana json_doc
adalah dokumen JSON, dan path
adalah jalur di dalam dokumen.
Contoh
Berikut ini contoh untuk didemonstrasikan.
SET @json_document = '
{
"_id" : 1,
"name" : "Wag",
"details" : {
"type" : "Dog",
"weight" : 20,
"awards" : {
"Florida Dog Awards" : "Top Dog",
"New York Marathon" : "Fastest Dog",
"Sumo 2020" : "Biggest Dog"
}
}
}
';
SELECT JSON_QUERY(@json_document, '$.details');
Hasil:
{ "type" :"Dog", "weight" :20, "awards" :{ "Florida Dog Awards" :"Top Dog", "New York Marathon" :"Anjing Tercepat", "Sumo 2020" :"Anjing Terbesar" }}
Kita dapat menggunakan notasi titik untuk turun ke objek bersarang berikutnya:
SET @json_document = '
{
"_id" : 1,
"name" : "Wag",
"details" : {
"type" : "Dog",
"weight" : 20,
"awards" : {
"Florida Dog Awards" : "Top Dog",
"New York Marathon" : "Fastest Dog",
"Sumo 2020" : "Biggest Dog"
}
}
}
';
SELECT JSON_QUERY(@json_document, '$.details.awards');
Hasil:
{ "Florida Dog Awards" :"Top Dog", "New York Marathon" :"Anjing Tercepat", "Sumo 2020" :"Anjing Terbesar"}
Array
Berikut ini contoh mengembalikan array:
SET @json_document = '
{
"_id" : 1,
"awards" : [ "Top Dog", "Best Dog", "Biggest Dog" ]
}
';
SELECT JSON_QUERY(@json_document, '$.awards');
Hasil:
+------------------------------------------+| JSON_QUERY(@json_document, '$.awards') |+------------------------------------- -----+| [ "Anjing Teratas", "Anjing Terbaik", "Anjing Terbesar" ] |+-------------------------------- ----------+
Jika Anda ingin mengembalikan elemen array yang sebenarnya, coba JSON_VALUE()
fungsi.
Jalur Tidak Ada
Melewati jalur yang tidak ada di dokumen JSON menghasilkan NULL
.
Contoh:
SET @json_document = '
{
"_id" : 1,
"awards" : [ "Top Dog", "Best Dog", "Biggest Dog" ]
}
';
SELECT JSON_QUERY(@json_document, '$.type');
Hasil:
+--------------------------------------+| JSON_QUERY(@json_document, '$.type') |+------------------------------------- -+| NULL |+----------------------------------+
Nilai Skalar
Mencoba mengembalikan nilai skalar akan mengembalikan NULL
.
Contoh:
SELECT JSON_QUERY('{ "weight": 10 }', '$.weight');
Hasil:
+--------------------------------------------+| JSON_QUERY('{ "berat":10 }', '$.berat') |+------------------------------ --------------+| NULL |+--------------------------------------------+Untuk mengembalikan nilai skalar, gunakan
JSON_VALUE()
fungsi.Argumen Null
Jika ada argumen
NULL
, hasilnya adalahNULL
:SELECT JSON_QUERY(null, '$.type'), JSON_QUERY('{"a":1}', null);
Hasil:
+------------------------+------------------ ------------+| JSON_QUERY(null, '$.type') | JSON_QUERY('{"a":1}', null) |+----------------------------+----- ------------------------+| NULL | NULL |+----------------------------+------------------ -----------+Jumlah Parameter Salah
Tidak memberikan argumen akan menyebabkan kesalahan:
SELECT JSON_QUERY();
Hasil:
ERROR 1582 (42000):Jumlah parameter salah dalam panggilan ke fungsi asli 'JSON_QUERY'Sama halnya ketika Anda memberikan argumen yang terlalu sedikit atau terlalu banyak:
SELECT JSON_QUERY('{ "a": 1}');
Hasil:
ERROR 1582 (42000):Jumlah parameter salah dalam panggilan ke fungsi asli 'JSON_QUERY'