Postgressql操作json

305 阅读1分钟

前言

PostgreSQL 提供了强大的 JSON 和 JSONB 数据类型及相关操作,适用于存储和查询半结构化数据

json使用

创建json字段

可以利用语句创建json

CREATE TABLE sys_user (
   id serial NOT NULL PRIMARY KEY,
   name varchar(255),
   info json NOT NULL
);

或者利用客户端创建json字段

image.png

插入数据

insert into sys_user ("name", info) VALUES ('aaa', '{
    "id": 1,
    "name": "asd",
    "age": 12
}')

image.png

json查询

->

->: 返回 JSON 对象中的值

SELECT info -> 'name' AS userName FROM sys_user

输出结果为

image.png

->>

->>:按文本返回JSON对象字段

SELECT info ->> 'name' AS userName FROM sys_user

image.png

查询语句
SELECT
   *
FROM
   sys_user
WHERE
   info ->> 'name' = 'asd'

返回值为

image.png

SELECT
   *
FROM
   sys_user
WHERE
   info -> 'hello' ->> 'message' = 'aaa'

返回语句为

image.png

image.png 但是查Id会报错

image.png

SELECT
   *
FROM
   sys_user
WHERE
  cast( info -> 'hello' ->> 'id' as  INT) = 12

输出结果为

image.png

json_each

json_each()函数的作用是:将最外层的JSON对象展开为一组键值对

SELECT
   json_each (info)
FROM
   sys_user

输出结果为

image.png

json_object_keys

json_object_keys()函数可以获得json对象最外层的一组键

SELECT
   json_object_keys  (info -> 'hello')
FROM
   sys_user

输出结果为

image.png

json_typeof

json_typeof()函数返回json最外层key的数据类型

SELECT
   json_typeof(info -> 'name')
FROM
   sys_user

输出结果为

image.png

总结

Postgressql可以操作json,但是在实际应用中,根据自己的技术选型做定制,毕竟跟mongo一样