json_each()函数的作用是:将最外层的JSON对象展开为一组键值对。举例:
SELECT
json_each (info)
orders;
如果想得到一组key-value对作为文本,可以使用json_each_text()函数。
json_object_keys()函数可以获得json对象最外层的一组键。举例:
SELECT
json_object_keys (info->'items')
orders;
json_typeof函数返回json最外层key的数据类型作为字符串。可能是number, boolean, null, object, array, string。下面语句查询所有item的数据类型:
SELECT
json_typeof (info->'items')
orders;
返回结果为:
json_typeof
object
object
object
object
下面语句返回嵌套类型中qty字段的数据类型:
SELECT
json_typeof (info->'items'->'qty')
orders;
返回结果:
json_typeof
number
number
number
number
JSON 代表 JavaScript Object Notation。JSON是开放的标准格式,由key-value对组成。JSON的主要用于在服务器与web应用之间传输数据。与其他格式不同,JSON是人类可读的文本格式。PostgreSQL从9.2版本开始支持JSON数据类型,并提供很多函数和操作符维护json数据。下面我们创建一张新表用于说明json数据类型:CREATE TABLE or...
Postgres-JSON
它是什么?
一个 Common Lisp 库,它在 PostgreSQL 9.4 的新上提供了一个用户友好的层,允许对 JSON 文档进行简单的存储和检索。 多亏了 Common Lisp 的优秀 JSON 库,Postgres-JSON 从而促进了 lisp 数据结构与适当数据库之间的轻松序列化。
你为什么要使用它?
您有一些要持久存储的现有 JSON 文档。
您想将 Common Lisp 哈希表、列表、向量等序列化到数据库中。
您喜欢 PostgreSQL 的品质,但严格的数据模式不适合您的项目。
在某种意义上,Postgres-JSON 是一个原始的NoSQL 文档数据库。 它是由激发优良接口但是使用传统的阻塞I / O接口,通过后现代。
Marijn Haverbeke 的精彩。
任何 Common Lisp JSON 库。
将json存在字段snapshot中
snapshot::json->>'key1‘,是将snapshot文本看作json取出key1值
json_array_elements是查询一个json数组
--weight
SELECT json_array_elements(t2.key2Value::json)->'weight' weig
有时候我们需要使用PostgreSQL这种结构化数组来存储一些非结构化数据,PostgreSQL恰好又提供了json这种数据类型,这里我们来简单介绍使用jsonb的一些常见操作。
PostgreSQL 提供了 json和 jsonb两种 json类型,两者的主要区别就是,json查询相对慢一些,插入会快一点,而jsonb则相反,查询效率会高一点,插入会慢一点。
下面进入我们今天的正题
create table purchase_order
1. json 和jsonb 区别
两者从用户操作的角度来说没有区别,区别主要是存储和读取的系统处理(预处理)和耗时方面有区别。json写入快,读取慢,jsonb写入慢,读取快。
2. 常用的操作符
// -> 返回json
select '[{"a":"foo"},{"b":"bar"},{"c":"baz"}]'::json->2 // 输出 {"c":"baz"}
select '{"a": {"b":"foo"}, "c":{"a": "aaa"}}'::json->'a' //
scene_actor_template_typhoon_record
CROSS JOIN LATERAL jsonb_array_elements ( points -> 'points' ) AS e
WHERE
points :: jsonb ->> 'name' = '雷伊'
AND e :: jsonb ->> 'time' > '2021-12-13T14:00:00'
PostgreSQL和MySQL是两种常用的关系型数据库管理系统(RDBMS)。下面是一些区别:
- 开源协议:PostgreSQL使用PostgreSQL许可证,而MySQL使用GPL授权。
- 语言支持:PostgreSQL支持更多的SQL标准,并且还支持触发器、视图、外键约束等功能。MySQL相对较弱,但是它支持存储过程和触发器。
- 数据类型:PostgreSQL支持更多的数据类型,包括数组、JSON、XML等。MySQL相对较弱。
- 并发控制:PostgreSQL使用MVCC(多版本并发控制)来处理并发事务,而MySQL使用行级锁定。
- 事务支持:PostgreSQL支持事务和事务日志,而MySQL不支持事务日志。
- 性能:在大多数情况下,MySQL的性能略优于PostgreSQL。
总的来说,PostgreSQL更适合大型应用,因为它支持更多的功能和标准,并且有更好的事务支持。MySQL更适合中小型应用,因为它的性能优于PostgreSQL。