Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menyoal Nilai Kekuatan \'Knight\' daripada Nested JSON Array dalam MySQL?

Bagaimana untuk Menyoal Nilai Kekuatan \'Knight\' daripada Nested JSON Array dalam MySQL?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-29 05:20:02304semak imbas

How to Query Strength Value of a

Menyiasat Tatasusunan JSON Bersarang dengan Kunci

Dalam MySQL, anda boleh mendapatkan semula nilai tertentu daripada tatasusunan JSON bersarang menggunakan gabungan JSON_TABLE () fungsi dan klausa WHERE.

Pertimbangkan tatasusunan JSON berikut:

<code class="json">[
    {"Race": "Orc", "strength": 14},
    {"Race": "Knight", "strength": 7}
]</code>

Untuk mendapatkan semula kekuatan Knight, anda boleh menggunakan pertanyaan berikut:

<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 = 'Knight'</code>

Pertanyaan ini menggunakan fungsi JSON_TABLE() untuk mencipta jadual maya daripada tatasusunan JSON, dengan lajur untuk setiap atribut. Klausa WHERE kemudiannya digunakan untuk menapis hasil berdasarkan atribut "Race".

Faedah dan Had

Menggunakan JSON_TABLE() menawarkan beberapa faedah:

  • Membenarkan pemilihan dan unjuran atribut khusus daripada dokumen JSON.
  • Boleh digunakan untuk menggunakan syarat pada medan dalam data JSON.

Walau bagaimanapun, ia juga mempunyai beberapa batasan:

  • Memerlukan menyatakan medan atribut dalam pertanyaan, yang mungkin tidak dapat dilaksanakan jika struktur data tidak diketahui.
  • Boleh mengakibatkan pertanyaan rumit apabila berurusan dengan mendalam dokumen JSON bersarang atau tidak berstruktur.

Pendekatan Alternatif

Jika struktur data tidak diketahui atau kerap berubah, pendekatan alternatif ialah menggunakan fungsi JSON_SEARCH() untuk mencari laluan ke nilai yang dikehendaki, dan kemudian gunakan operator laluan untuk mengekstrak nilai. Walau bagaimanapun, kaedah ini tidak membenarkan pemilihan atau unjuran semudah JSON_TABLE().

Atas ialah kandungan terperinci Bagaimana untuk Menyoal Nilai Kekuatan \'Knight\' daripada Nested JSON Array dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn