Di MySQL, JSON_VALUE() fungsi mengekstrak nilai dari dokumen JSON di jalur yang ditentukan.
Fungsi ini diperkenalkan di MySQL 8.0.21.
Sintaks
Sintaksnya seperti ini:
JSON_VALUE(json_doc, path [RETURNING type] [on_empty] [on_error]) Dimana:
on_empty:
{NULL | ERROR | DEFAULT value} ON EMPTY
on_error:
{NULL | ERROR | DEFAULT value} ON ERROR Contoh
Berikut adalah contoh sederhana untuk ditunjukkan:
SELECT JSON_VALUE( '{ "name" : "Wag", "type" : "Dog" }', '$.type' ); Hasil:
Dog
Array
Berikut ini contoh mendapatkan nilai dari array:
SELECT JSON_VALUE( '{ "name" : "Wag", "scores" : [ 25, 36, 48 ] }', '$.scores[1]' ); Hasil:
36
Array berbasis nol, jadi 1 mengembalikan elemen kedua (0 akan mengembalikan yang pertama).
Dokumen Tersemat
Berikut ini contoh mendapatkan nilai dari objek yang disematkan:
SELECT JSON_VALUE(
'{
"_id" : 1,
"details" : {
"name" : "Wag",
"type" : "Dog"
}
}',
'$.details.type'
); Hasil:
Dog
Jenis Pengembalian
Berikut ini contoh menentukan jenis pengembalian:
SELECT JSON_VALUE(
'{
"_id" : 1,
"details" : {
"name" : "Wag",
"type" : "Dog"
}
}',
'$.details' RETURNING json
); Hasil:
{"name": "Wag", "type": "Dog"}
Jika Anda tidak menentukan jenis pengembalian, jenis pengembaliannya adalah VARCHAR(512) .
Hasil Kosong
Secara default, jika tidak ada data yang ditemukan pada jalur yang ditentukan, NULL dikembalikan:
SELECT JSON_VALUE(
'{
"name" : "Wag",
"type" : "Dog"
}',
'$.score'
); Hasil:
NULL
Namun, opsi berikut dapat digunakan untuk secara eksplisit menentukan apa yang harus terjadi ketika tidak ada data yang ditemukan di jalur yang diberikan:
NULL ON EMPTY:Fungsi mengembalikanNULL; ini adalah perilaku default.DEFAULT:valueDI KOSONGvalue. yang diberikan dikembalikan. Jenis nilai harus cocok dengan jenis yang dikembalikan.ERROR ON EMPTY:Fungsi memunculkan kesalahan.
Contoh:
SELECT JSON_VALUE(
'{
"name" : "Wag",
"type" : "Dog"
}',
'$.score'
DEFAULT 'Nothing found' ON EMPTY
); Hasil:
Nothing found
Kesalahan
Berikut ini dapat digunakan untuk menentukan apa yang terjadi ketika kesalahan terjadi:
NULL ON ERROR:JSON_VALUE()mengembalikanNULL; ini adalah perilaku default.DEFAULT:Ini adalah nilai yang dikembalikan; nilainya harus cocok dengan jenis pengembalian.valueDI KESALAHANERROR ON ERROR:Terjadi kesalahan.
Jika digunakan, ON EMPTY harus mendahului ON ERROR ayat. Menentukannya dalam urutan yang salah akan menyebabkan kesalahan sintaksis.
Indeks
Seperti disebutkan dalam catatan rilis MySQL 8.0.21, JSON_VALUE() fungsi menyederhanakan pembuatan indeks pada JSON kolom. Panggilan ke JSON_VALUE( sama dengan memanggil json_doc , path MENGEMBALIKAN type )CAST( JSON_UNQUOTE( JSON_EXTRACT( .json_doc , path ) ) SEBAGAI type )
Berikut adalah contoh yang digunakan dalam catatan rilis:
CREATE TABLE inventory(
items JSON,
INDEX i1 ( (JSON_VALUE(items, '$.name' RETURNING CHAR(50))) ),
INDEX i2 ( (JSON_VALUE(items, '$.price' RETURNING DECIMAL(5,2))) ),
INDEX i3 ( (JSON_VALUE(items, '$.quantity' RETURNING UNSIGNED)) )
);