Di MariaDB, JSON_VALUE()
adalah fungsi bawaan yang mengembalikan nilai skalar dari dokumen JSON. Lebih khusus lagi, ini mengembalikan skalar yang ditentukan oleh jalur yang disediakan.
Sintaks
Sintaksnya seperti ini:
JSON_VALUE(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 = '
{
"name": "Wag",
"type": "Dog",
"weight": 20
}
';
SELECT JSON_VALUE(@json_document, '$.name');
Hasil:
+--------------------------------------+| JSON_VALUE(@json_document, '$.name') |+------------------------------------- -+| Wag |+--------------------------------------+
Jalur Tidak Ada
Melewati jalur yang tidak ada di dokumen JSON menghasilkan NULL
.
Contoh:
SET @json_document = '
{
"name": "Wag",
"type": "Dog",
"weight": 20
}
';
SELECT JSON_VALUE(@json_document, '$.color');
Hasil:
+---------------------------------------+| JSON_VALUE(@json_document, '$.color') |+------------------------------------- --+| NULL |+---------------------------------------+
Array
Berikut ini contoh pengembalian data dari array:
SET @json_document = '
{
"_id" : 1,
"awards" : [ "Top Dog", "Best Dog", "Biggest Dog" ]
}
';
SELECT JSON_VALUE(@json_document, '$.awards[1]');
Hasil:
+-------------------------------------------+| JSON_VALUE(@json_document, '$.awards[1]') |+---------------------------------- ---------+| Anjing Terbaik |+-------------------------------------------+Array berbasis nol, jadi
$.awards[1]
mengekstrak elemen kedua dariawards
larik.Objek Bersarang
Berikut ini contoh mendapatkan nilai dari objek yang bersarang di dalam objek lain:
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_VALUE( @json_document, '$.details.awards.Florida Dog Awards' ) AS Result;
Hasil:
+---------+| Hasil |+---------+| Anjing Teratas |+---------+Nilai Nonskalar
Mencoba mengembalikan nilai nonskalar (misalnya objek atau larik) mengembalikan
NULL
.Contoh:
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_VALUE( @json_document, '$.details.awards' ) AS Result;
Hasil:
+--------+| Hasil |+--------+| NULL |+--------+Untuk mengembalikan nilai nonskalar, gunakan
JSON_QUERY()
fungsi atauJSON_EXTRACT()
fungsi.Argumen Null
Jika ada argumen
NULL
, hasilnya adalahNULL
:SELECT JSON_VALUE(null, '$.type'), JSON_VALUE('{"a":1}', null);
Hasil:
+------------------------+------------------ ------------+| JSON_VALUE(null, '$.type') | JSON_VALUE('{"a":1}', null) |+----------------------------+----- ------------------------+| NULL | NULL |+----------------------------+------------------ -----------+Jumlah Parameter Salah
Tidak memberikan argumen akan menyebabkan kesalahan:
SELECT JSON_VALUE();
Hasil:
ERROR 1582 (42000):Jumlah parameter salah dalam panggilan ke fungsi asli 'JSON_VALUE'Sama halnya ketika Anda memberikan argumen yang terlalu sedikit atau terlalu banyak:
SELECT JSON_VALUE('{ "a": 1}');
Hasil:
ERROR 1582 (42000):Jumlah parameter salah dalam panggilan ke fungsi asli 'JSON_VALUE'