Dalam MySQL, mencari nod khusus dalam tatasusunan objek JSON boleh menjadi mencabar. Untuk menangani perkara ini, anda boleh mempertimbangkan untuk menggunakan fungsi JSON_SEARCH dan JSON_CONTAINS. Walau bagaimanapun, menggabungkan fungsi ini untuk memudahkan pertanyaan tidak selalu boleh dilaksanakan.
MySQL 8.0 menawarkan penyelesaian dengan fungsi JSON_TABLE(), yang mencipta jadual terbitan maya daripada dokumen JSON, dengan berkesan menganggapnya sebagai baris dan lajur . Ini membolehkan anda melakukan operasi seperti pemilihan dan unjuran pada data JSON.
Untuk menunjukkan, mari masukkan data contoh anda ke dalam jadual:
<code class="sql">create table mytable ( mycol json ); insert into mytable set mycol = '[{"Race": "Orc", "strength": 14}, {"Race": "Knight", "strength": 7}]';</code>
Anda kini boleh menggunakan JSON_TABLE() untuk cipta jadual maya:
<code class="sql">SELECT j.* FROM mytable, JSON_TABLE(mycol, '$[*]' COLUMNS ( race VARCHAR(10) PATH '$.Race', strength INT PATH '$.strength' )) AS j;</code>
Ini akan menghasilkan keputusan berikut:
race | strength |
---|---|
Orc | 14 |
Knight | 7 |
Untuk mendapatkan semula kekuatan perlumbaan tertentu, anda boleh menggunakan klausa WHERE:
<code class="sql">SELECT j.strength FROM mytable, JSON_TABLE(mycol, '$[*]' COLUMNS ( race VARCHAR(10) PATH '$.Race', strength INT PATH '$.strength' )) AS j WHERE j.race = 'Orc';</code>
Ini akan mengembalikan hasil berikut:
strength |
---|
14 |
Walau bagaimanapun, pendekatan ini memerlukan anda untuk menentukan medan atribut dalam pertanyaan anda, yang mungkin tidak sesuai untuk set data dengan definisi atribut yang tidak diketahui.
Atas ialah kandungan terperinci Bagaimana Mengekstraksi Nilai Utama Tertentu dengan Cekap daripada JSON Arrays dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!