加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

PostgreSQL何以支持丰富的NoSQL特性?

发布时间:2018-10-13 17:18:26 所属栏目:编程 来源:DBAplus社群
导读:【新品产上线啦】51CTO播客,随时随地,碎片化进修 作者先容 谭峰,网名francs,中国开源软件推进同盟PostgreSQL分会特聘专家,《PostgreSQL拭魅战》作者之一,《PostgreSQL 9 Administration Cookbook》译者之一。现就职于浙江移动认真应用上云架构管控以及

其它,jsonb范例会去掉输入数据中键值的空格,如下所示:

  1. mydb=> SELECT ' {"id":1, "name":"francs"}'::jsonb;  
  2. jsonb  
  3. -----------------------------  
  4. {"id": 1, "name": "francs"}  
  5. (1 row) 

上例中id键与name键输入时是有空格的,输出表现空格键被删除,而json的输出和输入一样,不会删掉空格键:

  1. mydb=> SELECT ' {"id":1, "name":"francs"}'::json; 
  2. json 
  3. ------------------------------- 
  4. {"id":1, "name":"francs"} 
  5. (1 row) 

其它,jsonb会删除一再的键,仅保存最后一个,如下所示:

  1. mydb=> SELECT ' {"id":1,  
  2. "name":"francs",  
  3. "remark":"a good guy!",  
  4. "name":"test"  
  5. }'::jsonb;  
  6. jsonb  
  7. ----------------------------------------------------  
  8. {"id": 1, "name": "test", "remark": "a good guy!"}  
  9. (1 row) 

上面name键一再,仅保存最后一个name键的值,而json数据范例会保存一再的键值。

对比json大大都应用场景提议行使jsonb,除非有非凡的需求,好比对json的键次序有非凡的要求。

4、JSONB与JSON操纵符

PostgreSQL支持富厚的JSONB和JSON的操纵符,举譬喻下:

以文本名目返回json范例的字段键值可以行使->>符,如下所示:

字符串是否作为顶层键值,如下所示:

  1. mydb=> SELECT '{"a":1, "b":2}'::jsonb ? 'a';  
  2. t  
  3. (1 row) 

删除json数据的键/值,如下所示:

  1. mydb=> SELECT '{"a":1, "b":2}'::jsonb - 'a';  
  2. {"b": 2}  
  3. (1 row) 

5、JSONB与JSON函数

json与jsonb相干的函数很是富厚,举譬喻下:

扩展最外层的json工具成为一组键/值功效集,如下所示:

  1. mydb=> SELECT * FROM json_each('{"a":"foo", "b":"bar"}');  
  2. key | value  
  3. -----+-------  
  4. a | "foo"  
  5. b | "bar"  
  6. (2 rows) 

以文本情势返回功效,如下所示:

  1. mydb=> SELECT * FROM json_each_text('{"a":"foo", "b":"bar"}');  
  2. a | foo  
  3. b | bar  
  4. (2 rows) 

一个很是重要的函数为row_to_json函数,可以或许将行作为json工具返回,此函数常用来天生json测试数据,好比将一个平凡表转换成json范例表:

  1. mydb=> SELECT * FROM test_copy WHERE id=1;  
  2. id | name  
  3. ----+------  
  4. 1 | a  
  5. (1 row)  
  6. mydb=> SELECT row_to_json(test_copy) FROM test_copy WHERE id=1;  
  7. row_to_json  
  8. ---------------------  
  9. {"id":1,"name":"a"}  
  10. (1 row) 

返回最外层的json对像中的键的荟萃,如下所示:

  1. mydb=> SELECT * FROM json_object_keys('{"a":"foo", "b":"bar"}');  
  2. json_object_keys  
  3. ------------------  
  4. a  
  5. b  
  6. (2 rows) 

6、jsonb键/值的追加、删除、更新

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读