Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menanyakan Data JSON dan JSONB dalam PostgreSQL?

Bagaimana untuk Menanyakan Data JSON dan JSONB dalam PostgreSQL?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-18 19:32:02259semak imbas

How to Query JSON and JSONB Data in PostgreSQL?

Mentanya Medan Jenis Data JSON dalam PostgreSQL

PostgreSQL 9.2 memperkenalkan jenis data JSON, tetapi pertanyaan lanjutan medan dalam rekod JSON memerlukan fungsi tersuai. PostgreSQL 9.3 mengembangkan keupayaan ini dengan pengendali dan fungsi.

Khususnya, untuk jadual dengan lajur JSON bernama "data":

Postgres 9.3:

  • Untuk mencari rekod oleh nama:
SELECT object
FROM   json_tbl
     , json_array_elements(data) AS object
WHERE  object->>'name' = 'Toby';

Postgres 9.4:

  • Memperkenalkan jenis data jsonb, yang menyimpan data JSON dalam jenis Postgres asli.
  • Indeks yang menggunakan GIN atau jenis lain boleh bertambah baik prestasi.

Postgres 9.5:

  • Lengkapkan fungsi dan operator jsonb.
  • Lebih banyak fungsi untuk memanipulasi dan memaparkan data jsonb.

Posgres 12:

  • Sokongan bahasa laluan SQL/JSON
  • Untuk mencari rekod mengikut nama menggunakan laluan JSON:
SELECT jsonb_path_query_first(data, '$[*] ? (@.name == "Toby")') AS object
FROM   jsonb_tbl
WHERE  data @> '[{ "name": "Toby"}]';  -- optional for indexing
  • Atau bersamaan:

    ...
    WHERE  data @@ '$[*].name == "Toby"';

Sumber tambahan:

  • [Postgres 9.3 JSON Functionality](https://www.postgresql.org/docs/9.3/ statik/)
  • [Postgres JSONB Jenis Data](https://www.postgresql.org/docs/current/static/datatype-json.html)
  • [Sokongan Laluan JSON Postgres 12](https://www.postgresql.org/docs /12/static/functions-json.html)
  • [Github PostSQL Fungsi](https://github.com/daviddias/postsด้วย)

Atas ialah kandungan terperinci Bagaimana untuk Menanyakan Data JSON dan JSONB 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