其它,jsonb范例会去掉输入数据中键值的空格,如下所示:
- mydb=> SELECT ' {"id":1, "name":"francs"}'::jsonb;
- jsonb
- -----------------------------
- {"id": 1, "name": "francs"}
- (1 row)
上例中id键与name键输入时是有空格的,输出表现空格键被删除,而json的输出和输入一样,不会删掉空格键:
- mydb=> SELECT ' {"id":1, "name":"francs"}'::json;
- json
- -------------------------------
- {"id":1, "name":"francs"}
- (1 row)
其它,jsonb会删除一再的键,仅保存最后一个,如下所示:
- mydb=> SELECT ' {"id":1,
- "name":"francs",
- "remark":"a good guy!",
- "name":"test"
- }'::jsonb;
- jsonb
- ----------------------------------------------------
- {"id": 1, "name": "test", "remark": "a good guy!"}
- (1 row)
上面name键一再,仅保存最后一个name键的值,而json数据范例会保存一再的键值。
对比json大大都应用场景提议行使jsonb,除非有非凡的需求,好比对json的键次序有非凡的要求。
4、JSONB与JSON操纵符
PostgreSQL支持富厚的JSONB和JSON的操纵符,举譬喻下:
以文本名目返回json范例的字段键值可以行使->>符,如下所示:
字符串是否作为顶层键值,如下所示:
- mydb=> SELECT '{"a":1, "b":2}'::jsonb ? 'a';
- t
- (1 row)
删除json数据的键/值,如下所示:
- mydb=> SELECT '{"a":1, "b":2}'::jsonb - 'a';
- {"b": 2}
- (1 row)
5、JSONB与JSON函数
json与jsonb相干的函数很是富厚,举譬喻下:
扩展最外层的json工具成为一组键/值功效集,如下所示:
- mydb=> SELECT * FROM json_each('{"a":"foo", "b":"bar"}');
- key | value
- -----+-------
- a | "foo"
- b | "bar"
- (2 rows)
以文本情势返回功效,如下所示:
- mydb=> SELECT * FROM json_each_text('{"a":"foo", "b":"bar"}');
- a | foo
- b | bar
- (2 rows)
一个很是重要的函数为row_to_json函数,可以或许将行作为json工具返回,此函数常用来天生json测试数据,好比将一个平凡表转换成json范例表:
- mydb=> SELECT * FROM test_copy WHERE id=1;
- id | name
- ----+------
- 1 | a
- (1 row)
- mydb=> SELECT row_to_json(test_copy) FROM test_copy WHERE id=1;
- row_to_json
- ---------------------
- {"id":1,"name":"a"}
- (1 row)
返回最外层的json对像中的键的荟萃,如下所示:
- mydb=> SELECT * FROM json_object_keys('{"a":"foo", "b":"bar"}');
- json_object_keys
- ------------------
- a
- b
- (2 rows)
6、jsonb键/值的追加、删除、更新 (编辑:湖南网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|