首頁 >資料庫 >mysql教程 >如何在 PostgreSQL 中查詢 JSON 陣列中的元素?

如何在 PostgreSQL 中查詢 JSON 陣列中的元素?

Linda Hamilton
Linda Hamilton原創
2025-01-15 10:17:44227瀏覽

How to Query Elements Within JSON Arrays in PostgreSQL?

在PostgreSQL中查詢JSON陣列中的元素

簡介

SQL能夠有效地處理JSON資料的儲存。本文將重點放在如何在PostgreSQL中查詢儲存在JSON物件中的陣列。

查詢JSON巢狀數組

假設一個名為「data」的JSON欄位包含一個物件陣列。任務是從「objects」陣列中檢索所有與特定「src」值相符的記錄。

使用Lateral Join和Unnesting查詢

Postgres提供了json_array_elements()函數來展開JSON陣列。將其與lateral join結合使用,可以獲得所需的結果:

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

此查詢為每個JSON陣列元素建立一個lateral join,允許obj列表示陣列中的每個物件。

PostgreSQL 9.4 的替代方法

對於PostgreSQL 9.4及更高版本,您可以利用改進的JSON處理功能:

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

在此查詢中,「@>」運算子檢查陣列是否包含指定的物件。請記住將搜尋詞括在方括號中以符合JSON數組結構。

總結

要查詢JSON類型中的數組,您可以使用json_array_elements()展開數組並執行lateral join。對於PostgreSQL 9.4及更高版本,您可以使用增強的“@>”運算符以及匹配的GIN索引來進行高效匹配。這兩種方法都允許您根據陣列元素值檢索特定記錄。

以上是如何在 PostgreSQL 中查詢 JSON 陣列中的元素?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn