前言
PostgreSQL 提供了强大的 JSON 和 JSONB 数据类型及相关操作,适用于存储和查询半结构化数据
json使用
创建json字段
可以利用语句创建json
CREATE TABLE sys_user (
id serial NOT NULL PRIMARY KEY,
name varchar(255),
info json NOT NULL
);
或者利用客户端创建json字段
插入数据
insert into sys_user ("name", info) VALUES ('aaa', '{
"id": 1,
"name": "asd",
"age": 12
}')
json查询
->
->: 返回 JSON 对象中的值
SELECT info -> 'name' AS userName FROM sys_user
输出结果为
->>
->>:按文本返回JSON对象字段
SELECT info ->> 'name' AS userName FROM sys_user
查询语句
SELECT
*
FROM
sys_user
WHERE
info ->> 'name' = 'asd'
返回值为
SELECT
*
FROM
sys_user
WHERE
info -> 'hello' ->> 'message' = 'aaa'
返回语句为
但是查Id会报错
SELECT
*
FROM
sys_user
WHERE
cast( info -> 'hello' ->> 'id' as INT) = 12
输出结果为
json_each
json_each()函数的作用是:将最外层的JSON对象展开为一组键值对
SELECT
json_each (info)
FROM
sys_user
输出结果为
json_object_keys
json_object_keys()函数可以获得json对象最外层的一组键
SELECT
json_object_keys (info -> 'hello')
FROM
sys_user
输出结果为
json_typeof
json_typeof()函数返回json最外层key的数据类型
SELECT
json_typeof(info -> 'name')
FROM
sys_user
输出结果为
总结
Postgressql可以操作json,但是在实际应用中,根据自己的技术选型做定制,毕竟跟mongo一样