MySQL menyediakan cara yang mudah untuk mencari dan mengekstrak maklumat khusus daripada data JSON yang disimpan dalam pangkalan datanya. Begini cara anda boleh melakukan carian sedemikian:
MySQL Versi 5.7 dan Ke Atas
Jika anda menggunakan MySQL versi 5.7 atau lebih baru, anda boleh menggunakan fungsi JSON_EXTRACT. Fungsi ini membolehkan anda mengekstrak nilai tertentu daripada rentetan JSON. Untuk mencari nilai tertentu dalam medan attribs_json, anda boleh menggunakan pertanyaan seperti ini:
SELECT JSON_EXTRACT(attribs_json, '$.feature."1".value') AS feature_value FROM products WHERE JSON_EXTRACT(attribs_json, '$.feature."1".value') REGEXP '^[^""3"$]'
Pertanyaan ini akan memilih nilai kekunci "nilai" dalam kekunci "1" bagi "ciri " objek dalam medan attribs_json untuk semua produk yang tidak mempunyai "3" sebagai nilai.
MySQL yang terdahulu Versi
Untuk versi MySQL yang lebih awal, anda boleh menggunakan ungkapan biasa dengan operator REGEXP untuk mencari corak dalam rentetan JSON. Walau bagaimanapun, pendekatan ini lebih kompleks dan memerlukan penghuraian rentetan yang lebih intensif.
Contoh Pertanyaan
Pertimbangkan struktur JSON berikut:
{ "feature": { "1": { "value": "[\"2\",\"3\"]" }, "2": { "value": "[\"1\"]" }, "3": { "value": "[\"1\"]" } } }
Untuk cari kunci "1" dengan nilai yang bukan "3", anda boleh menggunakan yang berikut pertanyaan:
SELECT id, attribs_json FROM products WHERE attribs_json REGEXP '"1":{.*"value":"[^"3"$]$'
Nota Penting
Apabila menggunakan ungkapan biasa, ingat untuk melarikan diri daripada aksara khas dalam corak carian anda untuk mengelakkan padanan yang tidak diingini. Selain itu, sintaks untuk JSON_EXTRACT dan REGEXP mungkin berbeza sedikit bergantung pada versi MySQL tertentu yang anda gunakan.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Data JSON Tertentu dengan Cekap dari MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!