回答

收藏

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

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

我正在寻找PostgreSQL 9.2中新JSON函数的一些文档和/或示例。
$ s4 l! U8 z: x具体来说,给定一系列JSON记录:
: {9 i2 T$ B  l. W9 \[  {name: "Toby",occupation: "Software Engineer"}, {name: "Zaphod",occupation: "Galactic President"}]如何编写SQL以按名称查找记录?
" ~$ [1 N) u6 L0 p在原始SQL中:
, N5 E* l# G1 R8 J  K% gSELECT * from json_data WHERE "name" = "Toby"官方开发人员手册非常稀疏:
  O  m- O( ~8 \+ K7 Xhttp://www.postgresql.org/docs/devel/static/datatype-json.html0 P, @3 R* v) l- i6 |
http://www.postgresql.org/docs/devel/static/functions-json.html
更新我我整理了一个要点,详细介绍了一下PostgreSQL
3 l) f2 [/ a1 V! y9.2当前可实现的功能。使用一些自定义函数,可执行以下操作:" m* }  l# R  m2 y8 ^! g
SELECT id,json_string(data,'name') FROM thingsWHERE json_string(data,'name') LIKE 'G%';更新二我现在将JSON函数转移到自己的项目:
6 ?. N7 e7 V7 n6 b0 s9 _/ uPostSQL-    一组用于将军PostgreSQL和PL /
* k$ W$ u) r/ }5 t) M- J! qv8变成一个伟大的JSON存储文档的功能
' \; z" Z! }7 L& ^                                                               
9 v0 A" @3 b" y6 m, U    解决方案:                                                                + q1 t3 U$ t# s* _
                                                                Postgres 9.2我在pgsql-hackers列表中引用Andrew! R: N' U+ Y( \( W  l: f3 c
Dunstan的话:2 P7 j8 V( r% X8 R* j
在某个阶段可能会有一些json处理(与json相反)功能,但在9.2中则没有。7 T) U$ j7 D3 C
不能阻止他提供应该解决你的问题PLV8示例实现。
! L: q6 V3 _( K& f$ s2 BPostgres 9.3添加  json-processing”。: V) K" x' Z$ G4 k
有关新JSON功能手册。# R1 B' W4 B. ~& k
有关第9.三页新功能Postgres Wiki。3 F7 T% F7 l2 [$ ^$ q4 E/ F" Q* q
@Will向博客发布链接,展示下面新运营商的评论。
Postgres 9.3中 原始问题    的答案:" J4 \0 ?& @0 B" n' M2 w
SELECT *FROM   json_array_elements(  '[{"name": "Toby","occupation": "Software Engineer"},   {"name": "Zaphod","occupation": "Galactic President"}   AS elemWHERE elem->>'name' = 'Toby';进阶范例:: g. ~1 Q% m; ~1 P+ h8 x& e, r* Q
使用JSON嵌套数组查询组合记录数据类型对于更大的表,您可能需要添加表达索引来提高性能:; i3 v& @2 [- c; e
用于在JSON在数组中搜索元素的索引PostgreSQL 9.4添加 jsonb    (b值存储为二进制Postgres而且 两种    类型 都具有& `5 w" [1 s* A0 G3 y" Y1 w4 V
更多功能。除上述表达索引外,jsonb还支持GIN,btree和hash索引,其中GIN最有效。
; b/ @( C( T) P, ?$ n* O# k本手册json以及jsonb数据类型和功能。: J/ U6 _& `% {+ V
第9.4页的JSONB上的Postgres Wiki
本手册建议如下:- k% V$ n* P; _8 B) [  N
通常,大多数应用程序应该是JSON数据存储为jsonb,除非有非常特殊的需求,比如传统的对象键顺序假设。
- D& ?, G3 ?9 c% f, ?2 z) I大胆强调我的。8 g* O# W' q" s) S4 U0 h3 W
性能从GIN索引的总体改进中受益。6 c% m$ r/ \/ n0 c  Z9 f/ m, W
Postgres 9.5完整的jsonb功能和操作员。添加更多功能jsonb现场操作和显示。/ _; Z: X! y/ _9 J6 B7 [
Postgres 9.5发行说明中的主要好消息。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则