回答

收藏

如何使用新的PostgreSQL JSON查询数据类型中的字段?

技术问答 技术问答 140 人阅读 | 0 人回复 | 2023-09-13

我正在寻找PostgreSQL 9.2中新JSON函数的一些文档和/或示例。
' W2 C2 R# D6 A* x) Q具体来说,给定一系列JSON记录:
; \8 R. [* ?3 u2 M6 T8 v; x[  {name: "Toby",occupation: "Software Engineer"}, {name: "Zaphod",occupation: "Galactic President"}]如何编写SQL以按名称查找记录?3 d7 h- l+ ~' `, P9 j8 \
在原始SQL中:' K+ H7 [& O% g6 w& l$ r( j/ q& U
SELECT * from json_data WHERE "name" = "Toby"官方开发人员手册非常稀疏:  y" I7 t1 u( y
http://www.postgresql.org/docs/devel/static/datatype-json.html
4 p# [! R1 u% w5 L+ I! Q# r$ {http://www.postgresql.org/docs/devel/static/functions-json.html
更新我我整理了一个要点,详细介绍了一下PostgreSQL
5 A# ~) \8 X2 A! I  x2 C7 d9.2当前可实现的功能。使用一些自定义函数,可执行以下操作:
2 `" P8 k! c) rSELECT id,json_string(data,'name') FROM thingsWHERE json_string(data,'name') LIKE 'G%';更新二我现在将JSON函数转移到自己的项目:
# P7 c- T8 U& K2 h& JPostSQL-    一组用于将军PostgreSQL和PL /
% Q' U: L0 s! K3 D* J$ H3 Sv8变成一个伟大的JSON存储文档的功能0 @7 A& }2 b. _! ^6 J$ {% L1 F
                                                                $ I9 _% w$ {! z
    解决方案:                                                                * [5 y. g- g$ j( e- v7 j. H" B
                                                                Postgres 9.2我在pgsql-hackers列表中引用Andrew
/ u7 E) }! R6 N7 sDunstan的话:
8 K4 _  d2 Z9 ]" {' u/ Q在某个阶段可能会有一些json处理(与json相反)功能,但在9.2中则没有。
3 F5 q. e) A' G' _* [不能阻止他提供应该解决你的问题PLV8示例实现。
2 ^- q" {* @. ^, o1 DPostgres 9.3添加  json-processing”。. F6 W, D0 z3 C: V) |% o( q/ U
有关新JSON功能手册。
; A2 x" y9 C5 E: C; s2 u有关第9.三页新功能Postgres Wiki。
$ d& j( _" |9 \; N+ g@Will向博客发布链接,展示下面新运营商的评论。
Postgres 9.3中 原始问题    的答案:" o9 e- \! R; G1 V! p9 p3 A8 n
SELECT *FROM   json_array_elements(  '[{"name": "Toby","occupation": "Software Engineer"},   {"name": "Zaphod","occupation": "Galactic President"}   AS elemWHERE elem->>'name' = 'Toby';进阶范例:5 \1 Z' q. j, Y$ O0 G3 t- q, O
使用JSON嵌套数组查询组合记录数据类型对于更大的表,您可能需要添加表达索引来提高性能:
. A7 I3 U# {: x3 y2 A2 i0 k用于在JSON在数组中搜索元素的索引PostgreSQL 9.4添加 jsonb    (b值存储为二进制Postgres而且 两种    类型 都具有/ z; `" R& h6 D0 J- V+ A$ M5 D
更多功能。除上述表达索引外,jsonb还支持GIN,btree和hash索引,其中GIN最有效。6 g* Y; r. u$ t* E" q6 O
本手册json以及jsonb数据类型和功能。- p; V8 @5 `2 n4 c7 Q
第9.4页的JSONB上的Postgres Wiki
本手册建议如下:: D: \$ h2 c3 X) {9 d- q+ d
通常,大多数应用程序应该是JSON数据存储为jsonb,除非有非常特殊的需求,比如传统的对象键顺序假设。; H3 X7 K, w& h7 t6 ^6 E
大胆强调我的。* I. t. k1 P/ j* |9 W! q' n
性能从GIN索引的总体改进中受益。
7 w; I4 E+ s+ a% D$ [Postgres 9.5完整的jsonb功能和操作员。添加更多功能jsonb现场操作和显示。3 X5 ?  o8 Q  f+ V6 q; A+ p
Postgres 9.5发行说明中的主要好消息。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则