Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menyoal Elemen Dalam Tatasusunan JSON dalam PostgreSQL?

Bagaimana untuk Menyoal Elemen Dalam Tatasusunan JSON dalam PostgreSQL?

Linda Hamilton
Linda Hamiltonasal
2025-01-15 10:17:44227semak imbas

How to Query Elements Within JSON Arrays in PostgreSQL?

Elemen pertanyaan dalam tatasusunan JSON dalam PostgreSQL

Pengenalan

SQL boleh mengendalikan penyimpanan data JSON dengan berkesan. Artikel ini akan menumpukan pada cara membuat pertanyaan tatasusunan yang disimpan dalam objek JSON dalam PostgreSQL.

Pertanyaan JSON tatasusunan bersarang

Andaikan lajur JSON bernama "data" mengandungi tatasusunan objek. Tugasnya adalah untuk mendapatkan semula semua rekod yang sepadan dengan nilai "src" tertentu daripada tatasusunan "objek".

Soalan menggunakan Lateral Join and Unnesting

Postgres menyediakan fungsi json_array_elements() untuk mengembangkan tatasusunan JSON. Dengan menggabungkannya dengan cantuman sisi anda boleh mendapatkan hasil yang diinginkan:

<code class="language-sql">SELECT *
FROM reports r, json_array_elements(r.data->'objects') obj
WHERE obj->>'src' = 'foo.png';</code>

Pertanyaan ini mencipta cantuman sisi untuk setiap elemen tatasusunan JSON, membenarkan obj lajur mewakili setiap objek dalam tatasusunan.

Alternatif kepada PostgreSQL 9.4

Untuk PostgreSQL 9.4 dan lebih baru, anda boleh memanfaatkan pemprosesan JSON yang dipertingkatkan:

<code class="language-sql">SELECT * FROM reports WHERE data->'objects' @> '[{"src":"foo.png"}]';</code>

Dalam pertanyaan ini, operator "@>" menyemak sama ada tatasusunan mengandungi objek yang ditentukan. Ingat untuk melampirkan istilah carian dalam kurungan segi empat sama untuk memadankan struktur tatasusunan JSON.

Ringkasan

Untuk menanyakan tatasusunan dalam jenis JSON, anda boleh menggunakan json_array_elements() untuk mengembangkan tatasusunan dan melakukan cantuman sisi. Untuk PostgreSQL 9.4 dan yang lebih baru, anda boleh menggunakan pengendali "@>" yang dipertingkatkan bersama dengan indeks GIN yang sepadan untuk pemadanan yang cekap. Kedua-dua kaedah membolehkan anda mendapatkan semula rekod tertentu berdasarkan nilai elemen tatasusunan.

Atas ialah kandungan terperinci Bagaimana untuk Menyoal Elemen Dalam Tatasusunan JSON dalam PostgreSQL?. 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