PostgreSQL中jsonb类型字段操作

1、查询jsonb字段不为null

SELECT 
	ID,
	watcher :: json ->> 'processRouteWorkstations' AS workstations 
FROM
	mo_mfg_order 
WHERE
	enabled = TRUE 
	AND mfg_order_status_enum != 'MfgOrderStatus.unReleased' 
	AND watcher ->'processRouteWorkstations' is not null
	AND deleted = FALSE

注意,会返回{}空json的行

2、查询json字段不为{} 

SELECT 
	ID,
	watcher :: json ->> 'processRouteWorkstations' AS workstations 
FROM
	mo_mfg_order 
WHERE
	enabled = TRUE 
	AND mfg_order_status_enum != 'MfgOrderStatus.unReleased' 
	AND watcher->'processRouteWorkstations' != '{}'
	AND deleted = FALSE;

 3、查询包含某key的数据,结果和is not null示例1相同

SELECT 
	ID,
	watcher :: json ->> 'processRouteWorkstations' AS workstations 
FROM
	mo_mfg_order 
WHERE
	enabled = TRUE 
	AND mfg_order_status_enum != 'MfgOrderStatus.unReleased' 
	AND jsonb_exists(watcher, 'processRouteWorkstations')
	AND deleted = FALSE;

4、删除某个属性

UPDATE bc_process_route 
SET extra = jsonb_delete ( extra, 'nodes' ) 
WHERE
	ID = 1425995628128104449;

5、向json字段中添加属性

UPDATE bc_process_route 
SET extra = extra || '{"name":"penn"}' :: jsonb 
WHERE
	ID = 1425995628128104449;
	
UPDATE bc_process_route 
SET extra = extra || '{"age":10}' :: jsonb 
WHERE
	ID = 1425995628128104449;

 6、也可以用上面的方式修改某个属性

UPDATE bc_process_route 
SET extra = extra || '{"name":"penn"}' :: jsonb 
WHERE
	ID = 1425995628128104449;

 7、查询包含json

SELECT ID
	,
	extra 
FROM
	bc_process_route 
WHERE
	jsonb_contains ( extra, '{"name": "penn"}' )

 8、查询包含于某个json内容

SELECT ID
	,
	extra 
FROM
	bc_process_route 
WHERE
	jsonb_contained ( extra, '{"name": "penn", "age": 10, "address": "shanghai"}' )

 暂时先记录这几个,后面再遇到再记录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xinqing5130

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值