从 PostgreSQL 中的 JSON 数据检索数组元素
PostgreSQL 的 JSON 数据类型(在版本 9.3 中引入)简化了复杂数据结构的存储和管理。 然而,高效查询 JSON 数组中的特定元素可能很棘手。 本指南演示了检索数组元素的有效策略,特别关注对象数组中的“src”字段。
PostgreSQL 9.4 及更高版本的优化方法 (jsonb)
PostgreSQL 9.4 及更高版本提供卓越的 jsonb
数据类型,提供增强的性能和功能。 最有效的方法是使用 @>
运算符和 jsonb_array_elements()
:
<code class="language-sql">SELECT * FROM reports WHERE data->'objects' @> '[{"src":"foo.png"}]';</code>
这个简洁的查询直接检查“objects”数组是否包含与指定条件匹配的元素。
PostgreSQL 9.3 及更高版本的解决方案 (json)
对于 PostgreSQL 9.3 及更高版本(使用 json
类型),json_array_elements()
函数在横向联接中使用:
<code class="language-sql">SELECT data::text, obj FROM reports r, json_array_elements(r.data#>'{objects}') obj WHERE obj->>'src' = 'foo.png';</code>
这种方法取消了数组的嵌套,从而允许检查单个元素。
重要提示:
unnest
调用或横向连接。以上是如何在 PostgreSQL 中高效查询 JSON 数据中的数组元素?的详细内容。更多信息请关注PHP中文网其他相关文章!