Tentu, mari kita lihat cara menggunakan JSON_EXTRACT dalam MySQL untuk mencari nilai JSON ketika terdapat beberapa nilai yang sesuai.
Pengenalan JSON_EXTRACT
Fungsi JSON_EXTRACT dalam MySQL digunakan untuk mengekstrak data dari dokumen JSON. Sintaks dasarnya adalah seperti berikut:
JSON_EXTRACT(json_doc, path)
Di mana:
json_docadalah dokumen JSON.pathadalah jalur yang menentukan nilai yang akan diekstrak.
Contoh Penggunaan
Misalkan kita memiliki tabel bernama produk dengan kolom detail yang berisi data JSON seperti ini:
{
"nama": "Laptop XYZ",
"kategori": ["Elektronik", "Komputer"],
"harga": 1200
}
Kita ingin mencari semua produk yang termasuk dalam kategori "Elektronik" atau "Komputer". Berikut adalah query MySQL yang bisa Anda gunakan:
SELECT *
FROM produk
WHERE JSON_CONTAINS(detail, JSON_ARRAY('Elektronik'), '$.kategori')
OR JSON_CONTAINS(detail, JSON_ARRAY('Komputer'), '$.kategori');
Penjelasan
JSON_CONTAINS(detail, JSON_ARRAY('Elektronik'), '$.kategori')akan memeriksa apakah arraykategoridalam dokumen JSONdetailmengandung nilai "Elektronik".JSON_CONTAINS(detail, JSON_ARRAY('Komputer'), '$.kategori')akan memeriksa apakah arraykategoridalam dokumen JSONdetailmengandung nilai "Komputer".- Operator
ORdigunakan untuk menggabungkan kedua kondisi tersebut, sehingga query akan mengembalikan semua produk yang termasuk dalam salah satu kategori.
Contoh Lain
Jika kita ingin mengekstrak nama produk dari dokumen JSON, kita bisa menggunakan JSON_EXTRACT seperti ini:
SELECT JSON_EXTRACT(detail, '$.nama') AS nama_produk
FROM produk;
Ini akan mengembalikan kolom nama_produk yang berisi nama produk dari setiap baris dalam tabel produk.
Kesimpulan
JSON_EXTRACTmemungkinkan Anda untuk mengekstrak nilai dari dokumen JSON berdasarkan jalur tertentu.JSON_CONTAINSberguna untuk memeriksa apakah array JSON mengandung nilai tertentu.- Anda bisa menggunakan operator
ORuntuk menggabungkan beberapa kondisi pencarian.
Semoga penjelasan ini membantu Anda dalam menggunakan JSON_EXTRACT di MySQL. Jika Anda memiliki pertanyaan lebih lanjut, jangan ragu untuk bertanya.
Tidak ada komentar:
Posting Komentar